2011-09-13 18 views
0

クライアントの一覧を表示する必要がありますが、パラメータに基づいて表示方法が異なります。グリッドビュー内のAsp.netボタンが機能しない

これを行うには、グリッドがあり、内部にはユーザーコントロールがあります。そのコントロールには、その型に基づいて "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。

関連する問題