在DataBound事件中向DropDownList添加属性?

时间:2011-11-29 13:16:23

标签: c# asp.net drop-down-menu

我有一个下拉列表,我可以绑定到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只有:

enter image description here

如何捕获特定的有界listItem?

P.S。

NOT 想要取消数据绑定事件,并使用常规循环(在循环中添加lisItems)

2 个答案:

答案 0 :(得分:3)

在为DropDownList.DataBound调用DropDownList.DataBind()后,

DropDownList个事件触发。

DropDownList.ItemsListItemCollection,没有任何事件。

您必须再次手动遍历DropDownList.Items集合,或手动构建ListItemCollection然后添加。

注意:您可能不喜欢的另一种方法是扩展DropDownList和ListItemCollection并添加您想要的事件。

答案 1 :(得分:1)

你想要的是类似于GridView.RowDataBound的东西,DropDownList不存在。您需要做的是DataBound事件中的foreach循环,或者您可以通过构建自己的自定义DropDownList来添加此功能。后一种选择的唯一问题是微软并不总是暴露你需要覆盖的方法...所以我不能建议你做你想做的事情是多么容易或多难。