1

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

4

2 回答 2

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;
        }
    }
于 2012-11-27T12:15:42.197 回答
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 方法创建另一个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"] })
于 2012-11-27T11:17:49.610 回答