Свяжите свойство 'style' DropDownList внутри asp.net ListView - PullRequest
1 голос
/ 24 декабря 2010

У меня есть следующий код внутри моего шаблона 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 Ответ

1 голос
/ 24 декабря 2010

Вы можете добавить событие 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";
        }
}
...