开发者

Asp.net buttons inside control inside gridview not working

I need to display a list of clients, but display them differently based on a parameter.

To do this, I have a gridvew, and inside there is a user control. That control has an "if" based on the type.

My problems:

  1. If I add a button inside the control, when it is pressed I get a button validation error.

  2. If I disable validation errors (enableEventValidation="false"), I get button commands to work, but I'm not able to change values on the control either with full postbacks or an updatepanel.

    <asp:GridView ID="gvClients" runat="server" AutoGenerateColumns="False" >
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <xxx:ClientListGridItem ID="ClientListItem1" runat="server" Client='<%# ((Client) Container.DataItem) %&开发者_开发技巧gt;' />
            </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"  />
...
<% 
 }
    %>

I'm sure there is prettier, more object oriented way to do this too...


Changing ClientListGridItem.ascx into:

<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>

should work.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜