0

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

问题:组合框当前显示这样的信息

          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 的新手,所以不知道如何

4

3 回答 3

1

您可以使用 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));

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

之后记得重新绑定。

于 2013-09-02T12:24:34.957 回答
0
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;   `          
于 2013-09-02T12:48:03.913 回答
0

为此,您需要在绑定到数据网格之前过滤掉绑定源。

于 2013-09-02T12:15:57.387 回答