【问题标题】:Bind the 'style' property of a DropDownList inside an asp.net ListView在 asp.net ListView 中绑定 DropDownList 的“样式”属性
【发布时间】:2011-05-30 08:07:57
【问题描述】:

我的 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" %>;">

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

【问题讨论】:

  • 有没有办法让语法像你有工作一样?我正在尝试做同样的事情,如果可能的话,我想使用这样的语法。

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


【解决方案1】:

您可以添加一个 ListView ItemDataBound 事件,然后在每一行中添加下拉列表的样式属性。示例代码:

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";
        }
}

【讨论】:

  • 谢谢,我正在考虑和实施同样的事情。只是,您还可以通过将 e.Item 转换为 ListViewDataItem 来访问 DataItem。 var dataObject = ((ListViewDataItem)e.Item).DataItem as MyCustomObject;
  • 是否可以使用 OP 在他的帖子中的语法?我正在尝试做同样的事情。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多