我有一个下拉列表,我可以绑定到DataTable。
ddlItems.DataSource = dt;
ddlItems.DataBind();
在最后的HTML中我有:
...
<option value="-1">aaa</option>
<option value="-2">bbb</option>
...
但是我想在DataBound事件中捕获bind事件并向每个listItem添加一个属性,以便最终的Html将是:
...
<option value="-1" MyAttr="lalala1" >aaa</option>
<option value="-2" MyAttr="lalala2" >bbb</option>
...
但是数据绑定事件的签名是:
protected void ddlItemsDataBound(object sender, EventArgs e)
并且e只有:
如何捕获特定的有界listItem?
P.S。
我 NOT 想要取消数据绑定事件,并使用常规循环(在循环中添加lisItems)
答案 0 :(得分:3)
DropDownList.DataBound
调用DropDownList.DataBind()
后, DropDownList
个事件触发。
DropDownList.Items
是ListItemCollection
,没有任何事件。
您必须再次手动遍历DropDownList.Items
集合,或手动构建ListItemCollection
然后添加。
注意:您可能不喜欢的另一种方法是扩展DropDownList和ListItemCollection并添加您想要的事件。
答案 1 :(得分:1)
你想要的是类似于GridView.RowDataBound
的东西,DropDownList不存在。您需要做的是DataBound事件中的foreach循环,或者您可以通过构建自己的自定义DropDownList来添加此功能。后一种选择的唯一问题是微软并不总是暴露你需要覆盖的方法...所以我不能建议你做你想做的事情是多么容易或多难。