Doudy

Doudy

  • NA
  • 11
  • 19k

I got “System.Collections.Generic.List” instead of data

Dec 13 2012 1:06 PM

I tried to make a autoComplete textbox like google Search with C# in a WPF application, basically what I want to do is have a autocomplete textbox which is bound to a sql database table. the table has 2 fields(Barcode and Name),my code as below:


In XMAL :

<Grid>

        <Grid.RowDefinitions>

            <RowDefinition Height="37*" />

            <RowDefinition Height="88*" />

        </Grid.RowDefinitions>

        <TextBlock Text="Type Your Search :" HorizontalAlignment="Left"  VerticalAlignment="Bottom" Width="112" Height="15.96" Margin="31,0,0,4" />

        <TextBox HorizontalAlignment="Right" VerticalAlignment="Bottom" Height="25" Width="325" Margin="0,0,10,0" x:Name="txtCAuto" TextWrapping="NoWrap" />

       

        <ListBox x:Name="lbSuggestion" SelectionChanged="lbSuggestion_SelectionChanged"  Background="LightYellow" Grid.Row="1" Visibility="Collapsed" HorizontalAlignment="Right" VerticalAlignment="Top" Width="325" Margin="0,0,10,0"/>

    </Grid>


Code Behind:


        List<string> nameList;

        List<Product> prodList;

 

        public List<string> SelProd4Sale(string str )

        {

            string constr = "Data Source=.;Initial Catalog=AgamistaStore;User ID=emad2012;Password=emad_2012";

            SqlConnection SqlCon = new SqlConnection(constr);

            SqlCommand SqlCmdProds = new SqlCommand();

            SqlCmdProds.Connection = SqlCon;

            SqlCmdProds.CommandType = CommandType.Text;

            SqlCmdProds.CommandText = "SELECT dbo.ProductsTbl.ProductID,ProductsTbl.ProductBarcode," +

                "dbo.ProductsTbl.ProductName, dbo.ProductsTbl.SalePrice FROM dbo.ProductsTbl ";

            SqlCon.Open();

            SqlDataAdapter dapProds = new SqlDataAdapter();

            dapProds.SelectCommand = SqlCmdProds;

            DataSet dsProds = new DataSet();

            dapProds.Fill(dsProds);

            SqlCon.Close();

            prodList = new List<Product>();

            for (int i = 0; i < dsProds.Tables[0].Rows.Count; i++)

            {

                prodList.Add(new Product

                                (dsProds.Tables[0].Rows[i]["ProductBarcode"].ToString(),

                                dsProds.Tables[0].Rows[i]["ProductName"].ToString());

            }

            dsProds = null;

 

            nameList = new List<string>()

            {

               prodList.ToString()

            };

           

            return nameList;

        }

 

        public Window2()

        {

            InitializeComponent();

            SelProd4Sale(txtCAuto.Text);

            txtCAuto.TextChanged += new TextChangedEventHandler(txtAuto_TextChanged);

        }

 

        #region TextBox-TextChanged-txtAuto

        private void txtAuto_TextChanged(object sender, TextChangedEventArgs e)

        {

            string typedString = txtCAuto.Text.ToUpper();

            List<string> autoList = new List<string>();

            autoList.Clear();

 

            foreach (string item in nameList)

            {

                if (!string.IsNullOrEmpty(txtCAuto.Text))

                {

                    if (item.StartsWith(typedString))

                    {

                        autoList.Add(item);

                    }

                }

            }

 

            if (autoList.Count > 0)

            {

                lbSuggestion.ItemsSource = autoList;

                lbSuggestion.Visibility = Visibility.Visible;

            }

            else if (txtCAuto.Text.Equals(""))

            {

                lbSuggestion.Visibility = Visibility.Collapsed;

                lbSuggestion.ItemsSource = null;

            }

            else

            {

                lbSuggestion.Visibility = Visibility.Collapsed;

                lbSuggestion.ItemsSource = null;

            }

        }

        #endregion

 

        #region ListBox-SelectionChanged-lbSuggestion

        private void lbSuggestion_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {

            if (lbSuggestion.ItemsSource != null)

            {

                lbSuggestion.Visibility = Visibility.Collapsed;

                txtCAuto.TextChanged -= new TextChangedEventHandler(txtAuto_TextChanged);

                if (lbSuggestion.SelectedIndex != -1)

                {

                    txtCAuto.Text = lbSuggestion.SelectedItem.ToString();

                }

                txtCAuto.TextChanged += new TextChangedEventHandler(txtAuto_TextChanged);

            }

        }

        #endregion

    }

 

    class Product

    {

        private string _ProductBarcode = "";

        private string _ProductName = "";

 

        public Product(string prodName,string prodBarcode)

        {

            this._ProductBarcode = prodBarcode;

            this._ProductName = prodName;

        }

 

        public string ProductBarcode

        {

            get { return _ProductBarcode; }

            set { _ProductBarcode = value; }

        }

 

        public string ProductName

        {

            get { return _ProductName; }

            set { _ProductName = value; }

        }

 

    }

 

When I run this I got "System.Collections.Generic.List" as result instead of data.

 

Can somebody help me please & tell me what 's wrong?

 

Thanks.


Answers (3)