我有一个对应于数据网格的combox框,当我选择一个带有所选索引的值更改函数时,数据网格会反映这一点。
问题:组合框当前显示如下信息
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的新手所以不确定如何
答案 0 :(得分: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));
可能有更好的方法,但这可能会有所帮助。如果您还没有使用它们,则可能必须添加using语句。 System.Collections.Generic和System.Linq
记得重新开始。
答案 1 :(得分:0)
为此,您需要在绑定到数据网格之前过滤掉绑定源。
答案 2 :(得分: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; `