【问题标题】:Set Combobox selected item based on its ItemsValue根据 ItemsValue 设置 Combobox 选定项
【发布时间】:2018-06-19 03:55:08
【问题描述】:

我有一个组合框,假设一个项目的显示文本是“学校”,它的项目值是 19。所以我将这 19 存储到 DataGrid 中。

然后,我从 DataGrid 检索 Combobox 值,然后我想做的只是基于从 DataGrid 检索到的值,组合框应该设置它的显示项或具有值 19 的 SelectedItem。在上述情况下,Combobox 应该显示其选定项如果值为 19,则为“学校”。

到目前为止,我已经编写了代码。但它总是给我一个组合框的第一项。

            DataGrid gd = (DataGrid)sender;
        DataRowView rowSelected = gd.SelectedItem as DataRowView;
        if(rowSelected!=null)
        {
            for (int i = 0; i < comboBox1.Items.Count;i++ )
            {
                if (Convert.ToString(comboBox1.SelectedValue) == Convert.ToString(rowSelected[14]))
                {
                    index = comboBox1.Items.IndexOf(comboBox1.SelectedValue);
                }
                comboBox1.SelectedItem= comboBox1.Items[index];
            }
            textBox9.Text=rowSelected[14].ToString();

        }

【问题讨论】:

  • 当我写这个comboBox1.Items[index];这件事给了我错误,这是唯一的赋值、调用、递增、递减、表达式可以用作语句。
  • 是在那个地方获取项目而不是设置项目
  • 它现在正在工作,但它总是返回给我 Combobox 的第一个项目。我已经编辑了有问题的代码,请看一下。
  • 我没有看到任何修改

标签: c# wpf combobox datagrid


【解决方案1】:

现在我可以根据从 WPF DataGrid 中检索的值检索组合框项。

            for (int i = 0;i <comboBox1.Items.Count; i++)
            {
                comboBox1.SelectedIndex = i;
                if ((string)(comboBox1.SelectedValue) == Convert.ToString(rowSelected[14]))
                {
                    index = i;
                }

            }

            comboBox1.SelectedIndex = index;

【讨论】:

    【解决方案2】:

    把你的代码改成

    if(rowSelected!=null)
    {
        int index = comboBox1.Items.IndexOf(rowSelected[14]);
        comboBox1.SelectedItem = comboBox1.Items[index];
    }
    

    使用组合框的FindStringExact()方法

    int i = comboBox1.FindStringExact("Combo"); 
    if(i >= 0)
    {
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多