2016-12-25 20 views
0

におけるパネルの表示を変更することができません - 私がやろうとしています何私はaspxページ(たとえばMyPage.aspx)がレンダリングされたHTMLコード

<asp:DataList ... > 
    <HeaderTemplate> 
     ... 
    </HeaderTemplate> 
    <ItemTemplate> 
     <asp:Table ID="table" runat="server"> 
      <asp:TableRow ... > 
       <asp:TableCell ... > 
        <asp:ImageButton ID="btnToggle" OnClick="ToggleVisibility" ... > 
       </asp:TableCell> 
       ... 
      </asp:TableRow> 
     </asp:Table> 
     <asp:DataGrid ... > 
     </asp:DataGrid> 
     <asp:Panel ID="panel" runat="server" ...> 
      <asp:Button ID="button1" runat="server" ...> 
      <asp:Button ID="button2" runat="server" ...> 
     </asp:Panel> 
    </ItemTemplate> 
    <AlternatingItemTemplate> 
     ... 
    </AlternatingItemTemplate> 
</asp:DataList> 

はいつでもということですbtnToggleをクリックすると、表示の切り替えがpanelに切り替わります。私はそのVisibleプロパティを変更することができるんだけど、その視認性が(ブラウザを介して確認する)レンダリングされたHTMLページに変更されません。この機能で

Dim panelToggle As Panel = sender.Parent.Parent.Parent.Parent.Controls(5) 

- 私はこのようなToggleVisibility()panelを取得しています。

私はなぜそれが分かりません。親切に、助けてください。

ありがとうございました。

答えて

1

ボタンクリックを処理するDataListにOnItemCommandイベントを追加します。ボタン自体にOnClickイベントを追加する必要はありません。問題は、私はToggleVisibility() ``に書かれていたロジックであったが

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    //find the panel in the datalist item object and cast it back to a panel 
    Panel panel = e.Item.FindControl("panel") as Panel; 

    //you can now access it's properties 
    panel.Visible = false; 
} 

VB

Protected Sub DataList1_ItemCommand(ByVal source As Object, ByVal e As DataListCommandEventArgs) 
    'find the panel in the datalist item object and cast it back to a panel 
    Dim panel As Panel = CType(e.Item.FindControl("panel"),Panel) 

    'you can now access it's properties 
    panel.Visible = false 
End Sub 
+0

の背後にあるコードで次に

<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand"> <ItemTemplate> <asp:Button ID="btnToggle" runat="server" Text="Button" /> <asp:Panel ID="panel" runat="server"> Panel content. </asp:Panel> </ItemTemplate> </asp:DataList> 

は、私はより良いことを管理するために、あなたのアイデアを使用しました。実際には、ボタンの可視性を最初に設定しようとしていましたが、もし誰かが見えるようになったら、そのパネルを表示するように設定しなければなりませんでしたが、デフォルトで 'panel'は不可視でした(' Visible = "false "')、プログラムは最初に ''パネル 'を可視に設定せずに、それらのボタンを最初に見えるようにしていませんでした。 – PalashV

関連する問題