1

ASP.NET 4 で Web フォームを作成しています。ドロップダウン リストでの選択内容に基づいて、テーブルにエントリの長いリストを表示する必要があります。次の ASPX とコード ビハインドがあります。

<form method="post" runat="server" >
    <asp:ScriptManager runat="server" ID="mScriptManager"></asp:ScriptManager>
    <asp:UpdatePanel ID="pnlLocalizationInfo" runat="server" >
        <ContentTemplate>
            <div id="selectLanguage">
                <p>Pick language
                    <asp:DropDownList ID="ddllanguage" runat="server" OnTextChanged="SelectLanguage" AutoPostBack="true" />
                </p>
            </div>
            <div id="languageTable">
        <asp:Repeater id="repTable" runat="server" OnItemDataBound="AddTableData" >
            <HeaderTemplate>
            Language: 
            <asp:Label ID="lbllanguageTable" runat="server" />
            <table>
                <tr>
                    <th>Name</th>
                    <th>Value</th>
                </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:Label ID="lbltableNameLocalization" runat="server" />
                        <asp:HiddenField ID="hfnameLocalization" runat="server" Value='<%#((Localization)Container.DataItem).Id %>' />
                    </td>
                    <td>
                        <asp:TextBox ID="txttableValueLocalization" runat="server" />
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
            </table>
            </FooterTemplate>
        </asp:Repeater>
        <asp:Button ID="btnupdateLocalization" runat="server" OnClick="UpdateLocalization" Text="Save" />           
            </div>                
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

public void SelectLanguage(object sender, EventArgs e)
{
    string lang = ddllanguage.SelectedValue;
    if (ddllanguage.SelectedIndex != 0)
    {
        repTable.DataSource = Data.GetAllLocalizations(lang);
        repTable.DataBind();
    }
}

この呼び出しGetAllLocalizationsは、後で Repeater テーブルに入力するために使用されるデータベース エンティティを含む ArrayList を返します。ただし、DataBind関数は呼び出し時にハングするため、ドロップダウン リストが変更されるたびにフォーム全体が機能しなくなります。データ バインドがイベント ハンドラーではなくページの読み込み時に行われる場合、正常に動作します。ただし、これと同じ方法 (ドロップダウン リストのイベント ハンドラーでのデータ バインド) を使用する別の古いページがあり、問題なく動作します。

何か案は?

4

2 に答える 2

1

私はジェコムにある程度同意します。

また、データベースの結果を直接表示することはできませんか? 最初に配列に渡されるのはなぜですか?

リピーターやデータ表示を操作するときは、SQL でストアド プロシージャまたは関数を作成し、サーバーがその作業を実行できるようにする必要があります。

あなたのやり方が難しい理由は、あなたがクライアントにすべての情報を解決するように頼んでいるからです。

より多くの情報がなければ、より具体的にするのは難しい

于 2013-06-04T12:32:41.447 に答える