WPF中具有访问数据库的复选框列表框 [英] check list box with access DB in WPF

查看:50
本文介绍了WPF中具有访问数据库的复选框列表框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题是选中的列表框中的项目显示两次.在一个窗口中添加后..我在这里摆弄我的代码.请帮助我..
在高级感谢
我的表是在Microsoft Access中具有单个字段子字段的演示示例,数据库是DLL..
Window1.xaml

the problem is that the items in the checked list box are displayed twice.after adding in one window.. i am posing my code here.plz help me..
thanks in advanced
My table is demo with field single field sub in Microsoft access and database is DLL..
Window1.xaml

<pre lang="xml"><Window x:Class="WpfApplication11.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
    <Grid>
        <Button Content="add lesson" Height="23" HorizontalAlignment="Left" Margin="66,77,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="52,36,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
    </Grid>
</Window


>



Window1.xaml.cs


>



Window1.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data.OleDb;
using System.Data;

namespace WpfApplication11
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public OleDbConnection conn;
        public OleDbDataAdapter da;
        public DataSet ds;
        public DataSet ds1 = new DataSet();
        public DataTable dt;
        public OleDbCommand cmd;
        public OleDbDataReader dr;


        public string LessonForAdding { get; set; }
        public TripInfo tripInfo;
        MainWindow objmain = new MainWindow();
        List<TripInfo> tripList = new List<TripInfo>();
        public Window1()
        {
            InitializeComponent();
            objmain.listLesson.ItemsSource = tripList;
            InitializeComponent();
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            LessonForAdding = textBox1.Text;

            conn.Open();
            String sql = "INSERT INTO demo (sub) VALUES(''" + LessonForAdding + "'')";
            cmd = new OleDbCommand(sql, conn);
            cmd.ExecuteNonQuery();
          
            conn.Close();
           
          //  MessageBox.Show("insert");


            ////display database value

             
            //  conn.Open();                                            //listBox_Section.SelectedItem.ToString()
            //  try
            //  {
            //      da = new OleDbDataAdapter("SELECT distinct sub FROM demo", conn);

            //  }
            //  catch (Exception ex)
            //  {
            //      MessageBox.Show(ex.ToString());
            //  }
            //  ds = new DataSet();
            //  //listBox2.Items.Clear();
            //  da.Fill(ds);
            //  dt = ds.Tables[0];
            //  for (int i = 0; i < dt.Rows.Count; i++)
            //  {
            //      tripList.Add(new TripInfo(false, dt.Rows[i].ItemArray[0].ToString()));
            //     objmain.listLesson.Items.Refresh();
            //      //listLesson.Items.Add(dt.Rows[i].ItemArray[0].ToString());
            //  }
            //  conn.Close();
            //  MessageBox.Show("display");

             // LessonForAdding = textBox1.Text;
           
              this.Close();
        }
        public class TripInfo
        {
            public TripInfo(bool isVisited, string cityName)
            {
                IsVisited = isVisited;
                LessonName = cityName;
            }

            public Boolean IsVisited
            { get; set; }

            public String LessonName
            { get; set; }
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            conn = new OleDbConnection();

            conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Software Development\vishal_wpf\dem\WpfApplication11\WpfApplication11\DLL.mdb";



            
            
        }

    }
}



MainWindow.xaml



MainWindow.xaml

<pre lang="xml"><Window x:Class="WpfApplication11.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="536" Width="853" Loaded="Window_Loaded">
    <Grid>
        <TabControl Height="260" HorizontalAlignment="Left" Margin="41,57,0,0" Name="tabControl1" VerticalAlignment="Top" Width="731">
            <TabItem Header="old" Name="tabItem1">
                <Grid></Grid>
            </TabItem>
            <TabItem Header="new">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition>
                        </ColumnDefinition>
                        <ColumnDefinition>
                        </ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <Grid Height="180" Margin="10,10,24,37" Width="327">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="10*" />
                            <ColumnDefinition Width="317*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="84*" />
                            <RowDefinition Height="81*" />
                        </Grid.RowDefinitions>
                        <TextBox Grid.ColumnSpan="2" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="8,60,0,0" Name="textBox3" VerticalAlignment="Top" Width="209" />
                        <Button Click="btn_AssgnLesson_Click" Content="add prev" Grid.Column="1" Height="28" HorizontalAlignment="Left" Margin="215,6,0,0" Name="button1" VerticalAlignment="Top" Width="96" />
                        <Button Click="btn_ChgLesson_Click" Content="add here" Grid.Column="1" Grid.Row="1" Height="28" HorizontalAlignment="Left" Margin="215,57,0,0" Name="button2" VerticalAlignment="Top" Width="96" />
                        <ListBox Grid.Column="1" Grid.RowSpan="2" Height="128" HorizontalAlignment="Left" ItemsSource="{Binding Path=tripList}" Margin="13,6,0,0" Name="listLesson" Selector.IsSelected="{Binding IsChecked, ElementName=checkBox, Mode=TwoWay}" VerticalAlignment="Top" Width="194">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <CheckBox IsChecked="{Binding IsVisited}" Margin="2" VerticalAlignment="Center" />
                                        <TextBlock FontSize="14" Foreground="Black" Margin="2" Text="{Binding LessonName}" />
                                    </StackPanel>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </Grid>
                </Grid>
                <!--
                <GroupBox Header="groupBox1" Height="148" Name="groupBox1" Width="277">
                    <ListBox Height="74" Name="listLesson" Width="241" DataContext="{Binding}" IsSelected="{Binding IsChecked, ElementName=checkBox, Mode=TwoWay}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <CheckBox Margin="2" VerticalAlignment="Center" IsChecked="{Binding IsVisited}" />
                                    <TextBlock Margin="2" Foreground="Black" FontSize="14" Text="{Binding LessonName}" />
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </GroupBox>
                -->
            </TabItem>
        </TabControl>
    </Grid>
</Window


>



MainWindow.xaml.cs


>



MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.OleDb;
using System.Data;

namespace WpfApplication11
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public OleDbConnection conn;
        public OleDbDataAdapter da;
        public DataSet ds;
        public DataSet ds1 = new DataSet();
        public DataTable dt;
        public OleDbCommand cmd;
        public OleDbDataReader dr;
        List<TripInfo> tripList = new List<TripInfo>();
        public MainWindow()
        {
            InitializeComponent();
            listLesson.ItemsSource = tripList;
            DataContext = this;

            conn = new OleDbConnection();

            conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Software Development\vishal_wpf\dem\WpfApplication11\WpfApplication11\DLL.mdb";

           
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            tripList.Add(new TripInfo(false, textBox3.Text));
            listLesson.Items.Refresh();
        }
        public class TripInfo
        {
            public TripInfo(bool isVisited, string cityName)
            {
                IsVisited = isVisited;
                LessonName = cityName;
            }

            public Boolean IsVisited
            { get; set; }

            public String LessonName
            { get; set; }
        }

        private void btn_AssgnLesson_Click(object sender, RoutedEventArgs e)
        {
            Window1 wd1 = new Window1();
            wd1.ShowDialog();

            //display item
            conn.Open();
            try
            {
                da = new OleDbDataAdapter("SELECT distinct sub FROM demo", conn);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            ds = new DataSet();

            da.Fill(ds);
            dt = ds.Tables[0];
          // listLesson.Items.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                
                tripList.Add(new TripInfo(false, dt.Rows[i].ItemArray[0].ToString()));
                listLesson.Items.Refresh();

            }
            conn.Close();
        
                 
        }
        private void btn_ChgLesson_Click(object sender, RoutedEventArgs e)
        {
          
            tripList.Add(new TripInfo(false, textBox3.Text));
            listLesson.Items.Refresh();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            
        }

    }
}

推荐答案

您是否注意到您的window1类具有两次IntializeComponent?
此处:
Did you notice that your window1 class has IntializeComponent twice?
Here:
public Window1()
{
    InitializeComponent();
    objmain.listLesson.ItemsSource = tripList;
    InitializeComponent();
}



此外,简单地使用Visual Studio DEBUGGER可以告诉您何时或在何处重复代码,并且您自己可以检测到相同代码.试试吧.



Further, a simple use of Visual Studio DEBUGGER can tell you when or where the code is getting repeated and you all by yourself can detect the same. Try it.


这篇关于WPF中具有访问数据库的复选框列表框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆