与DropDownList项目ASP.Net连接

时间:2012-11-27 11:13:32

标签: asp.net

我的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

2 个答案:

答案 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 typeIEnumerable(集合),其中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"] })