系统.数据DataTable.一行选择()问题

本文关键字:一行 选择 问题 数据 DataTable 系统 | 更新日期: 2023-09-27 18:01:07

ComboBox_SelectedValueChanged()事件期间,我在几个TextBox上设置值时遇到了一些困难。

我的表单有一个ComboBox,下面还有四个TextBox字段。基本上,当ComboBox.SelectedText更改时,我想更新文本字段的值。

到目前为止,我的代码如下:

属性:

        this.cmbTopic.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.hCAliasDataSet, "Items.Topic", true));
        this.cmbTopic.DataSource = this.hCAliasDataSet;
        this.cmbTopic.DisplayMember = "Items.Topic";
        this.cmbTopic.Location = new System.Drawing.Point(81, 14);
        this.cmbTopic.Name = "cmbTopic";
        this.cmbTopic.Size = new System.Drawing.Size(199, 21);
        this.cmbTopic.TabIndex = 0;
        this.ToolTip1.SetToolTip(this.cmbTopic, "Add a new Topic");
        this.cmbTopic.ValueMember = "Items.Topic";
        this.cmbTopic.SelectedValueChanged += new System.EventHandler(this.cmbTopic_SelectedValueChanged);

事件:

    private void cmbTopic_SelectedValueChanged(object sender, EventArgs e)
    {
        string sQuery;            
        sQuery = "Topic = '" + cmbTopic.SelectedText + "'";
        // Set the textboxes according to selected Topic value
        DataRow[] dr = hCAliasDataSet.Tables["Topics"].Select(sQuery);
        for (int i = 0; i < dr.Length; i++)
        {
            this.txtFields_1.Text = Convert.ToString(dr[i]["Description"]);
            this.txtFields_2.Text = Convert.ToString(dr[i]["Family"]);
            this.txtFields_3.Text = Convert.ToString(dr[i]["Options"]);
            this.txtFields_4.Text = Convert.ToString(dr[i]["Group"]);
        }
     }

当程序运行时,我去更改ComboBox值,但似乎什么都没有发生?

系统.数据DataTable.一行选择()问题

您在数据Roiw中得到的结果总是只给出一行。dataRow[]基本上是dataRow的一个数组对象,在这里您正在循环它的元素。

您应该知道它给出了多少元素,然后在填充文本框之前进行检查,而不是循环。

试试这个

    if ( dr.Length > 1)
       {
        this.txtFields_1.Text = Convert.ToString(dr["Description"]);
        this.txtFields_2.Text = Convert.ToString(dr["Family"]);
        this.txtFields_3.Text = Convert.ToString(dr["Options"]);
        this.txtFields_4.Text = Convert.ToString(dr["Group"]);
    }

并且还要确保元素不是null或空的。您可以通过此为文本框提供默认值

    this.txtFields_1.Text =(string.IsNullOrEmpty(drRow["Family"].ToString())) ? "No data" : Convert.ToString(dr["Family"]);