我有一个listview,显示数据库中的所有EmpID和EmpName。当我点击一行时,如何查看数据库到文本框的值?这就是我将列表视图中的选定行显示为textBox的方式。
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;
}
}
列表视图没有地址,年龄和其他字段。我如何在textBox中显示listview不包含的地址和其他字段?
答案 0 :(得分:1)
当您使用数据填充ListView
时,您可以将DataRow
(或保留所有数据行信息的其他对象)添加到ListViewItem
的标记属性。
item.Tag = row;
然后,当用户在列表视图中选择行时,您可以从所选DataRow
的Tag属性中获取ListViewItem
,并从此数据行中提取属性值,如下所示:
var row = item.Tag as DataRow.
答案 1 :(得分:1)
您可以将列表绑定到包含所需数据的数据源。如果您不想在列表中显示列,请将该列的宽度设为0,那么它将隐藏..然后您可以像这样填充文本框:例如
EmpAge.Text = item.subItems[3].Text ;//column's width is 0
EmpAddress.Text = item.subItems[4].Text ;//column's width is 0
答案 2 :(得分: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();
`