JuiceUI からコンテナー コントロールを使用しようとしています。これまでのところ、私はアコーディオンとタブで遊んできました。これらは優れたコントロールですが、これらのコントロールの「コンテンツ」タグ内で子コントロールを更新する際に問題が発生しました。
アコーディオンには PanelContent タグがあり、タブには TabContent タグがありますが、簡単にするために、アコーディオンに注目します。
PanelContent の内部には、ラベルがあります。このラベルをいくつかの情報で更新する必要があります。コントロールに直接アクセスできなかったので、アコーディオン自体の FindControl からコントロールをキャストしてみました。NullReferenceException が発生しました。AccordionPanel でも同じことを試しましたが、同じことが起こりました。それはすべて理にかなっています。
VBF で、メンバーはラベルが PanelContent の子であると指摘しました。ID プロパティがないため、サーバー側のコードから直接アクセスできませんでした。ということでAccordionPanelからアクセスしてみました。できましたが、FindControl メソッドがありませんでした。
それで、その PanelContent タグ内からそのラベルにアクセスする方法がわかりません。
ただし、AccordionPanel から PanelContent プロパティを取得すると、InstantiateIn というメソッドが 1 つあります。インテリセンスの説明は次のとおりです。
Public Sub InstantiateIn(container As System.Web.UI.Control) クラスによって実装される場合、子コントロールとテンプレートが属する System.Web.UI.Control オブジェクトを定義します。これらの子コントロールは、インライン テンプレート内で定義されます。
それは私が必要とするもののように聞こえます。しかし、私はそれを使用する方法がよくわかりません。JuiceUI のドキュメントは完全ではないようです。これについては何も見つかりませんでした。
アイデアはありますか?
クライアント側:
<asp:UpdatePanel runat="server">
<ContentTemplate>
<table style="width: 99%;">
<tr>
<td class="style1">
<asp:Label ID="Label1" runat="server" Text="CSO:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCSONumber" runat="server" CssClass="UpperCase" Width="115px"></asp:TextBox>
</td>
</tr>
<tr>
<td class="style1">
</td>
<td>
<asp:Button ID="btnRetrieve" runat="server" Height="22px" Text="Retrieve" Width="120px" />
</td>
</tr>
<tr>
<td class="style1">
</td>
<td>
<asp:Label ID="lblMessage" runat="server" ForeColor="Red" Text="N/A" Visible="False"></asp:Label>
</td>
</tr>
</table>
<juice:Accordion ID="accSwrlHddRepl" runat="server">
<juice:AccordionPanel runat="server" Title="HDD Information" ID="pnlHddInfo">
<PanelContent>
<p>
<asp:Label ID="lblOriginalHDD" runat="server" Text="N/A"></asp:Label>
</p>
</PanelContent>
</juice:AccordionPanel>
</juice:Accordion>
</ContentTemplate>
</asp:UpdatePanel>