2011-11-29 67 views
1

我有一個下拉列表,我綁定到DataTable。在DataBound事件中將屬性添加到DropDownList?

ddlItems.DataSource = dt; 
    ddlItems.DataBind(); 
在最終的HTML

我:

... 
<option value="-1">aaa</option> 
<option value="-2">bbb</option> 
... 

但我想趕上綁定事件在數據綁定事件和一個屬性添加到每個的listItem,從而使最終的HTML將是:

... 
    <option value="-1" MyAttr="lalala1" >aaa</option> 
    <option value="-2" MyAttr="lalala2" >bbb</option> 
    ... 

但數據綁定事件的signiture是:

protected void ddlItemsDataBound(object sender, EventArgs e) 

和e只有:

enter image description here

我如何能趕上具體界定的listItem?

p.s.

要取消的數據綁定事件,並使用正則環(在一個循環中添加lisItems)

+0

「我不想......使用常規循環(在循環中添加ListItems)」。恐怕你別無選擇。但添加(不存在)的屬性ListItems [是不好的做法](http://stackoverflow.com/questions/2744455/is-it-a-bad-practice-to-add-extra-attributes-to-html-元件)。如果你想告訴我們你實際想要達到的目標,可能會有更好的方法。 –

+0

發件人是什麼?你可以將它轉換爲ListItem嗎? – MBen

+0

@MBen no ,,,它的DropDownList –

回答

3

DropDownList.DataBound事件觸發DropDownList.DataBind()被稱爲整個DropDownList後。

DropDownList.Items是沒有事件的ListItemCollection

您必須再次手動循環訪問DropDownList.Items集合,或者手動構建ListItemCollection然後添加它。

注意:您可能不會喜歡的替代方法是擴展DropDownList和ListItemCollection並添加所需的事件。

1

你想要的是類似於GridView.RowDataBound的東西,DropDownList不存在。你需要做的是在DataBound事件中的foreach循環,或者你可以通過構建自己的自定義DropDownList來添加此功能。後一種選擇唯一的問題是,微軟並不總是公開你需要重寫的方法......所以我不能指出你想做什麼是多麼容易或很難。