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

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

我有一个绑定(bind)到 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>
    ...

但是数据绑定(bind)事件的签名是:

  protected void ddlItemsDataBound(object sender, EventArgs e)

而 e 只有 :

enter image description here

我怎样才能捕捉到特定的有界列表项?

附:

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

最佳答案

DropDownList.DataBound 事件在为整个 DropDownList 调用 DropDownList.DataBind() 后触发。

DropDownList.Items 是一个没有事件的 ListItemCollection

您将不得不手动再次遍历 DropDownList.Items 集合或手动构建 ListItemCollection 然后添加它。

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

关于c# - 在 DataBound 事件中向 DropDownList 添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311366/

相关文章:

c# - 是否建议使用标记来进行语法突出显示?

c# - 将 json 数组转换为数据表 asp.net

javascript - 动画/s 窃听之前它完成

javascript - <select> 下拉选项中的链接

html - 停止菜单项在简单的 html 下拉菜单上出现两次

c# - 为什么当我达到大小限制时,我需要在我的大小受限的 MemoryCache 上调用两次 Set?

c# - 无法使用 FindControl C# 找到文本框

c# - 如何根据DataKeyName更改Gridview行颜色?

ios - uinavigationbar中的下拉菜单

c# - SelectList default Value ItemLabel 的用途是什么?