【问题标题】:ComboBox display member/value memberComboBox 显示成员/值成员
【发布时间】:2013-09-02 12:06:14
【问题描述】:

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

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

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

【问题讨论】:

标签: c# wpf combobox


【解决方案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

之后记得重新绑定。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • cool 会试试看的,有什么建议或者在哪里看吗?
    • 你在绑定什么数据网格?您可以在列表和数据表上有所不同。您的数据绑定来源是什么?
    • 我将组合框数据源设置为与 datagrid 相同,我可以变得不同,但问题是如果单元格有两个不同的时间,例如 9.21 和 9.22,它会将它们拾取为不同的跨度>
    • 向表中添加一个隐藏行(向数据表添加数据时),该行仅包含日期值。然后在那一天变得与众不同。
    【解决方案3】:
    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;   `          
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 2023-03-02
      • 2017-01-04
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      相关资源
      最近更新 更多