我需要显示客户列表,但会根据参数以不同方式显示它们。
要做到这一点,我有一个gridvew,里面有一个用户控件。该控件具有基于类型的“if”。
我的问题:
如果我在控件内添加一个按钮,按下它时会出现按钮验证错误。
如果我禁用验证错误(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" />
...
<%
}
%>
我确信有更漂亮,更面向对象的方式来做到这一点......
答案 0 :(得分:0)
将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>
应该有用。