显示从Database到TextBox的值

时间:2013-07-13 11:11:57

标签: c# sql-server winforms listview textbox

我有一个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不包含的地址和其他字段?

3 个答案:

答案 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();

`