系统.数据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
值,但似乎什么都没有发生?
您在数据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"]);