WPF中具有访问数据库的复选框列表框 [英] check list box with access DB in 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屋!