0

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">
                    &nbsp;
                </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>
4

1 に答える 1

0

私が理解していることから、シナリオの「FindControl」メソッドを実装するリリースされていない JuiceUI の保留中の更新があります。コードはソース リポジトリにありますが、nuget の更新はリリースされていません。

すでにその機能を備えていて、JuiceUI のいとこであるBrewという名前のフォークを試すことができます。

于 2013-03-12T16:19:20.337 に答える