如何在ASP.NET下拉列表中绑定DataTable两列数据作为数据源
问题:DataTable多列数据合并绑定到下拉列表
我有一个名为cachedData的DataTable,数据如下:
| COL1 | COL2 |
|---|---|
| 12 | - |
| - | 59 |
| 32 | - |
| - | 63 |
我希望将这些值绑定到下拉列表中,不区分这两列,即下拉列表的选项值应为12、59、32、63。我尝试了以下代码但出现错误,恳请帮助完成DataTable到下拉列表的绑定:
if (cachedData != null) { this.DigitalChannelSignatureDropDownList.DataTextField = "COL1"+"COL2"; this.DigitalChannelSignatureDropDownList.DataValueField = "COL1"+"COL2"; this.DigitalChannelSignatureDropDownList.DataSource = cachedData; this.DigitalChannelSignatureDropDownList.DataBind(); }
问题分析
你当前的代码错误在于直接拼接列名作为DataTextField和DataValueField,但DataTable中不存在名为COL1COL2的列,导致绑定失败。需要先提取两列中的有效数据,合并成单一集合后再绑定。
解决代码示例
if (cachedData != null) { // 提取两列中的非"-"值,合并为一个列表 var validValues = new List<string>(); foreach (DataRow row in cachedData.Rows) { string col1Val = row["COL1"].ToString().Trim(); if (col1Val != "-") { validValues.Add(col1Val); } string col2Val = row["COL2"].ToString().Trim(); if (col2Val != "-") { validValues.Add(col2Val); } } // 绑定到下拉列表 this.DigitalChannelSignatureDropDownList.DataSource = validValues; this.DigitalChannelSignatureDropDownList.DataBind(); }
说明
- 遍历DataTable的每一行,分别检查COL1和COL2的值,排除
-后加入集合 - 直接将字符串集合作为数据源,此时下拉列表会默认用集合元素同时作为选项文本和值,符合你的需求
内容的提问来源于stack exchange,提问作者hotflix
相关产品推荐
相关产品推荐

