从哈希表填充下拉列表
本文关键字:下拉列表 填充 哈希表 | 更新日期: 2023-09-27 18:32:35
>我正在尝试从Hashtable,从数据库中提取的HashTable键和值填充下拉列表,private Hashtable myHashTable = new Hashtable();
使用以下方法:
void LoadmyHashTable()
{
bussinessObject bs = new bussinessObject();
myDataset ds = new myDataset();
ds = bs.GetPosType(-1);
int rowsCount = ds.myTable.Rows.Count;
for (int i = 0; i < rowsCount; i++)
{
myHashTable.Add(ds.myTable.Rows[i]["dTypeName"],ds.myTable.Rows[i]["dTypeId"] );
}
}
然后,在 page load()
中调用该方法并尝试用 hashTable 值填充下拉列表之后:
myDropdownlist.DataSource = myHashTable;
myDropdownlist.DataTextField = "key";
myDropdownlist.DataValueField = "value";
myDropdownlist.DataBind();
我的下拉列表出现的问题显示为空!提前谢谢。
ASP.NET,C#
我修改了代码,如下所示,请尝试一下。
void LoadmyHashTable()
{
bussinessObject bs = new bussinessObject();
DataSet ds = new DataSet();
ds = bs.GetPosType(-1);
if (ds.Tables.Count > 0 )
{
for (int i = 0; i < ds.Tables[0].Rows.Count-1; i++)
{
myHashTable.Add(ds.Tables[0].Rows[i]["dTypeId"], ds.Tables[0].Rows[i]["dTypeName"]);
}
}
}
使用代码加载页面,如下所示
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LoadmyHashTable();
if (myHashTable.Count > 0)
{
myDropdownlist.DataSource = myHashTable;
myDropdownlist.DataTextField = "Value";
myDropdownlist.DataValueField = "Key";
myDropdownlist.DataBind();
}
}
}
希望这对您有所帮助...快乐编码...
DataTextField
和 DataValueField
值需要分别对应于绑定源中的一个属性。代码假定一个对象集合,这些对象至少具有一个名为"key"的属性和另一个名为"value"的属性。由于这不是真的,因此不会绑定任何项目。
编辑:此代码尚未经过测试,但您应该能够使用 LINQ 将数据集投影到匿名集合中:
var myHashTable = ds.myTable.Rows.Select( row => new { key = row["dTypeName"], value = row["dTypeId"] } );
然后,您使用的绑定应该可以工作。