2011-09-13 136 views
0

我需要顯示客戶端的列表,但顯示不同的基礎上參數。Asp.net按鈕裏面控件裏面gridview不工作

爲此,我有一個gridvew,裏面有一個用戶控件。該控件具有基於類型的「if」。

我的問題:

  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" /> 
... 
<% 
} 
    %> 

我敢肯定有更漂亮,更面向對象的方式來做到這一點太...

回答

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> 

should wo RK。

相關問題