组合框显示成员/值成员

本文关键字:成员 显示 组合 | 更新日期: 2023-09-27 18:29:57

我有一个对应于数据网格的组合框,当我选择一个具有所选索引更改函数的值时,数据网格会反映这一点。

问题:组合框当前显示的信息类似于

          Sep  2 2013  1:54PM
          Sep  2 2013  1:55PM
          Sep  3 2013  1:54PM

我想要的:我希望组合框保持相同的功能,例如,当我选择一个值时,它会与数据网格交互,但我只希望它显示DISTINCT日期,例如组合框应该显示:

             Sep 2 2013
             Sep 3 2013 etc 

有人知道怎么做吗?我是c#和wpf的新手,所以不确定是如何

组合框显示成员/值成员

您可以使用linq来限制数据并将其绑定到数据网格。

我不知道你的数据是什么样子的,但如果它是一个字符串列表或数组,你可以这样做。

//this gets the first 11 characters of the date, you may have to change it slightly for days that have 2 digits but this is just an example, it then makes a distinct list.
dropdown.DataSource = data.Select(s=>s.SubString(0,11)).Distinct();
datagrid.DataSource = data.Where(w=> w.StartsWith(dropdown.SelectedValue));

也许有更好的方法,但这可能会有所帮助。如果您还没有using语句,则可能需要添加它们。System.Collections.Generic和System.Linq

记得在之后重新绑定。

为此,您需要在绑定到数据网格之前筛选出绑定源。

DataTable dt = new DataTable();
            SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=testing;Userid=abc;pwd=abc");
            SqlCommand cmd = new SqlCommand("select ID,date from tbl_test",con);
            con.Open();
            sqldatareader drw = cmd.ExecuteReader();
            dt.Load(drw);       
            DataRow dr = dt.NewRow();
            dr["id"] = "0";
            dr["date"] = "Select date";
            dt.Rows.InsertAt(dr, 0);
            cmb_test.DataSource = dt;
            cmb_test.DisplayMember = "date";
            cmb_test.ValueMember = "id";
            cmb_test.SelectedIndex = 0; 
           selected changed event change code:
           sqlcommand cmd = new sqlcommand("select ID,date from tbl_test where  id="+cmb_test_send.SelectedValue+",con);
            con.Open();
            sqldatareader drw = cmd.ExecuteReader();
            dt.Load(drw);
            sample_datagridview.DataSource=dt;   `