2012-03-12 88 views
0

如何從列表框中提取出所選的文本和值。 下面是如何填充列表框從ListBox中提取選定的值

  // Populate ListBox 

      ListItem lstListItem = new ListItem(); 

      int intRecordCount = objDataSet.Tables[0].Rows.Count; 

      for (int i = 0; i <= intRecordCount - 1; i++) 
      { 
       lstListItem.Text = objDataSet.Tables[0].Rows[i]["SN_Notes"]; 
       lstListItem.Value = objDataSet.Tables[0].Rows[i]["ID"]; 
       this.lstNote.Items.Add(lstListItem); 
      } 

然後當我嘗試獲取選定的值,它返回空值。我正在使用Winform/VS2010

  intRecordCount = lstNote.Items.Count; 

      for (int i = 0; i <= intRecordCount - 1; i++) 
      { 
        lstNote.SelectedIndex = i; 
        strID = lstNote.SelectedValue.ToString(); // Always return Null Value 
      } 

預先感謝您!

+0

有你選擇了第一手的任何值,你也可以綁定你的控制列表框,而不是迭代的數據表。 – 2012-03-12 07:19:30

回答

1

您的代碼是baaad:

// Populate ListBox 
    int intRecordCount = objDataSet.Tables[0].Rows.Count; 

    for (int i = 0; i <= intRecordCount - 1; i++) 
    { 
     ListItem lstListItem = new ListItem(); 
     lstListItem.Text = objDataSet.Tables[0].Rows[i]["SN_Notes"]; 
     lstListItem.Value = objDataSet.Tables[0].Rows[i]["ID"]; 
     this.lstNote.Items.Add(lstListItem); 
    } 

您需要在每次迭代創建的ListItem一個新的實例 - 否則,你ListBox含有單ListItem的多個副本。

0

首先,您沒有正確綁定ListBox。你應該嘗試使用此代碼:

lstListItem.DataSource = objDataSet.Tables[0]; 
lstListItem.DisplayMember = "SN_Notes"; 
lstListItem.ValueMember = "ID"; 
2
// Populate ListBox 
int intRecordCount = objDataSet.Tables[0].Rows.Count; 

for (int i = 0; i <= intRecordCount - 1; i++) 
{ 
    ListItem lstListItem = new ListItem(); 
    lstListItem.Text = objDataSet.Tables[0].Rows[i]["SN_Notes"]; 
    lstListItem.Value = objDataSet.Tables[0].Rows[i]["ID"]; 
    this.lstNote.Items.Add(lstListItem); 
}