我的asp.net页面上有一个数据绑定下拉列表。
<asp:DropDownList ID="ddlCases" runat="server"></asp:DropDownList>
我正在填充ddlCases为
ddlCases.DataSourse = SelectItems();
ddlCases.DataValueField = "itemid";
ddlCases.DataTextField = "itemname";
ddlCases.SelectedIndex = 0;
ddlCases.DataBind();
SelectItems()返回一个数据表。 我想要做的是用序列号(1,2,3 ..)连接每个项目,它们在下拉列表中出现的顺序是什么样的 1. itemname1 2. itemname2 3. itemname3
我有什么选择来实现这一目标? 问候, ZB
答案 0 :(得分:1)
您可以处理数据绑定事件并编辑列表中的项目,请尝试以下代码:
protected void ddlCases_DataBound(object sender, EventArgs e)
{
for (int i = 0; i < ddlCases.Items.Count; i++)
{
ddlCases.Items[i].Text = i + 1 + ". " + ddlCases.Items[i].Text;
}
}
答案 1 :(得分:0)
你可以用linq来做,这样的事情应该可行
ddlCases.DataSourse = SelectItems().Select((item, index)
=> new{
index = index,
itemid = item.itemid,
itemname = index.ToString() + "." + item.itemname
});
ddlCases.DataValueField = "itemid";
ddlCases.DataTextField = "itemname";
ddlCases.SelectedIndex = 0;
ddlCases.DataBind();
修改强>
Select方法创建另一个包含新anonymous type的IEnumerable
(集合),其中index属性是第一个数组中的索引,itemid是itemid和itemname index + itenmane
很快,在LINQ语句中,我们创建了另一个临时类,其中包含我们想要的属性
希望这有意义
修改强>
如果SelectItems方法返回无类型数据表,则应在评论中建议@VinayC
ddlCases.DataSourse = SelectItems()
.AsEnumerable().Select((r, i) => new { itemid = r["itemid"], itemname = i.ToString() + r["itemname"] })