Кнопки Asp.net внутри элемента управления внутри gridview не работают - PullRequest
0 голосов
/ 13 сентября 2011

Мне нужно отобразить список клиентов, но отображать их по-разному в зависимости от параметра.

Для этого у меня есть gridvew, а внутри есть пользовательский элемент управления. Этот элемент управления имеет «если» на основе типа.

Мои проблемы:

  1. Если я добавляю кнопку в элемент управления, при ее нажатии я получаю ошибку проверки кнопки.

  2. Если я отключаю ошибки проверки (enableEventValidation = "false"), я получаю команды кнопок для работы, но я не могу изменить значения в элементе управления ни с полными обратными вызовами, ни с панелью обновления.

    <asp:GridView ID="gvClients" runat="server" AutoGenerateColumns="False" >
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <xxx:ClientListGridItem ID="ClientListItem1" runat="server" Client='<%# ((Client) Container.DataItem) %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    </asp:GridView>
    

ClientListGridItem.ascx:

<% if (Client.Style >= 100)
{
   %>
 <div class="ClientListItem1">
...
<% 
 }
else
{
    %>
 <div class="ClientListItem2">
 <asp:Button ID="Button2" runat="server" onclick="Button1_Click" Text="Button"  />
...
<% 
 }
    %>

Я уверен, что есть более красивый и более объектно-ориентированный способ сделать это тоже ...

1 Ответ

0 голосов
/ 13 сентября 2011

Изменение ClientListGridItem.ascx на:

<asp:Panel id="Div1" CssClass="ClientListItem1" runat="server">
...
</asp:Panel>
<asp:Panel id="Div2" CssClass="ClientListItem2"  runat="server">
 <asp:Button ID="Button2" runat="server" onclick="Button1_Click" CausesValidation="false" Text="Button"  />
..
</asp:Panel>
<script runat="server">
   override void OnDataBinding(EventArgs e) {
     Div1.Visible = Client.Style >= 100;
     Div2.Visible = ! Div1.Visible;
   }
</script>

должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...