2012-03-12 89 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); 
}