在asp.net ListView中绑定DropDownList的'style'属性

时间:2010-12-24 08:45:50

标签: asp.net .net listview data-binding drop-down-menu

我的ListView模板中有以下代码。

  <asp:DropDownList runat="server" ID="myDropDown" Width="60px"
     SelectedValue='<%# Eval("SelectedValue") %>' 
     DataSource='<%# Eval("DropDownList") %>'
     style='display:<%# (bool)Eval("ShowDropDown") ? "block" : "none" %>;' >
  </asp:DropDownList>

这个想法是它会生成html,但是隐藏所以我可以显示客户端。

但是,生成的html看起来像这样:

<select id="myDropDown" 
   style="width:60px;display:<%# (bool)Eval("ShowDropDown") ? "block" : "none" %>;">

我不明白为什么会这样做。有没有办法做到这一点(不使用类)?

1 个答案:

答案 0 :(得分:1)

您可以添加ListView ItemDataBound事件,然后在每行中为dropdownlist添加样式属性。示例代码:

protected void ListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
                DropDownList myDropDown = (DropDownLiast)e.Item.FindControl("myDropDown");

                System.Data.DataRowView rowView = e.Item.DataItem as System.Data.DataRowView;
                myDropDown.Style["display"] = ((bool)rowView["ShowDropDown"])?"block":"none";
        }
}