2013-07-13 71 views
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; 
} 
} 

該listview沒有地址,年齡和其他字段。我如何顯示列表視圖不包含在textBox中的地址和其他字段?

+0

最好的解決辦法是,你加載所有數據,並將其綁定到ListViewRow.And的標籤,當你在列表視圖中的任何行單擊剛剛取標記並將其解析爲類型標記的對象並在文本框中顯示值。它可以讓你避免將多個呼叫發送到數據庫。 – Ehsan

回答

1

可以綁定列表到一個包含您需要的所有數據的數據源..如果您不想在列表中顯示一列,請將該列的寬度設置爲0,然後將其隱藏起來......然後您可以像這樣填充文本框:例如

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

EmpAddress.Text = item.subItems[4].Text ;//column's width is 0 
1

當您用數據填充ListView時,您可以將DataRow(或保留所有數據行信息的其他對象)放到ListViewItem的Tag屬性中。

item.Tag = row; 

然後,當用戶在列表視圖中選擇行您可以從選定ListViewItem的標籤屬性來獲取DataRow並從這個數據行提取屬性值,就像這樣:

var row = item.Tag as DataRow. 
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(); 

`

相關問題