2012-11-27 107 views
1

我的asp.net頁面上有一個數據綁定下拉列表。與DropDownList項目連接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. itemname1 2. itemname2 3. itemname3

序列號(1,2,3 ......)我有什麼選擇來實現這一目標? 問候, ZB

回答

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(); 

編輯

選擇方法創建另一個IEnumerable(集合),其中包含新anonymous type,其中指數屬性是第一個數組中的索引,itemid是itemid和itemname索引+ itenmane

所以很快與LINQ statments我們創建另一個臨時類,包含屬性,我們希望

希望這有意義

編輯

如果一個SelectItems方法返回一個類型化的數據表,@VinayC在評論你應該建議寫

ddlCases.DataSourse = SelectItems() 
.AsEnumerable().Select((r, i) => new { itemid = r["itemid"], itemname = i.ToString() + r["itemname"] }) 
+0

不錯,那很快。你能否詳細說明一下,因爲我很抱歉,但我不是linq專家,什麼是項目和索引。它們是否應與我正在檢索的數據庫列匹配。 – ZedBee

+0

我已經添加了一些更多的細節,請看看,這是否工作? –

+0

可能是我沒有正確理解它,但它說'不能將lambda表達式轉換爲字符串..' – ZedBee

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; 
     } 
    }