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 ステートメントを使用して、必要なプロパティを含む別の一時クラスを作成します

これが理にかなっていることを願っています

編集

@VinayC がコメントで提案したように、SelectItems メソッドが型指定されていないデータ テーブルを返す場合は、次のように記述します。

ddlCases.DataSourse = SelectItems()
.AsEnumerable().Select((r, i) => new { itemid = r["itemid"], itemname = i.ToString() + r["itemname"] })
于 2012-11-27T11:17:49.610 に答える