Click here to Skip to main content
15,884,176 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
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
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
<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
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)
        {
            
        }

    }
}
Posted
Updated 6-Apr-11 0:23am
v3
Comments
vishal_h 7-Apr-11 0:46am    
i got solution it is not bcz initializeComponent twice.i was not clearing list box item before displaying..thanks

1 solution

Did you notice that your window1 class has IntializeComponent twice?
Here:
C#
public Window1()
{
    InitializeComponent();
    objmain.listLesson.ItemsSource = tripList;
    InitializeComponent();
}


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.
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 6-Apr-11 15:30pm    
Ha ha ha, nice catch! A 5.
--SA
Shahin Khorshidnia 7-Apr-11 0:09am    
Vote 5:
I think you got the answer now, Vishal-h.
vishal_h 7-Apr-11 0:47am    
i got answer i was not clearing list item before displaying..thanks..

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900