2

我有一个列表视图,显示数据库中的所有 EmpID 和 EmpName。单击一行时,如何查看从数据库到文本框的值?这就是我将所选行从列表视图显示到文本框的方式。

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
    ListViewItem item = listView1.SelectedItems[0];
    EmpIDtextBox.Text = item.SubItems[0].Text;
    EmpNametextBox.Text = item.SubItems[1].Text;
}
else
{
    EmpIDtextBox.Text = string.Empty;
    EmpNametextBox.Text = string.Empty;
}
}

列表视图没有地址、年龄和其他字段。如何在文本框中显示列表视图不包含的地址和其他字段?

4

3 回答 3

1

当您填充ListView数据时,您可以将DataRow(或保留所有数据行信息的另一个对象)放入 Tag 的属性中ListViewItem

item.Tag = row;

然后,当用户在列表视图中选择行时,您可以DataRow从所选的 Tag 属性中获取ListViewItem并从此数据行中提取属性值,如下所示:

var row = item.Tag as DataRow.
于 2013-07-13T11:20:55.040 回答
1

您可以将列表绑定到包含您需要的所有数据的数据源。如果您不想在列表中显示列,则将该列的宽度设为 0,然后它将隐藏。然后您可以填充文本框像这样:例如

EmpAge.Text = item.subItems[3].Text ;//column's width is 0

EmpAddress.Text = item.subItems[4].Text ;//column's width is 0
于 2013-07-13T11:34:55.797 回答
0

或者,您可以这样做:

/*declare variable with scope global */
 int id;

if (Listview.SelectedItems.Count > 0)
        {
            ListViewItem item;

            item = ListProducts.SelectedItems[0];
             id = int.parse(item.SubItems[0].Text.ToString());
            }
 SqlCommand cmd = "SELECT Address, Age FROM table2 WHERE id= @item";
 cmd.Connection = YourDataBaseConnection;
 cmd.Parameters.Clear();
 cmd.Parameters.Add("@item", SqlDbType.Int).Value= id;
 con.Open();
 sqlDataReader rdr = new SqlDataReader();
 rdr= cmd.ExecuteReader();
 while(rdr.Read())
 {
   yourTextBox.Text = rdr[0].Text.Tostring();
   //place the data to desired textBox
 }
 con.Dispose();
 cmd.Dispose();

`

于 2013-07-14T16:14:28.923 回答