1

テーブルに 2 つの列があり、ドロップダウンの 'ddlModelNumber' は、選択した 'ddlServicerOrg' の値に依存しています。「ddlServicerOrg」のデータは非常に大きいため、選択したアイテムを変更するたびにレンダリングしたくありません。jquery:ajax を使用せずに、「ddlServicerOrg」で選択した値に基づいて「ddlModelNumber」にデータをロードしたい。つまり、 OnChange="_doPostBack('pnlModel','');" です。それを行う正しい方法は?「ddlServicerOrg」に対して大量のデータが何度もレンダリングされるのは望ましくありません。以下はコードです。

                <td>
                    <asp:DropDownList ID="ddlServicerOrg" runat="server" DataTextField="ListText" DataValueField="ID"
                        OnInit="ddlServicerOrg_Init" OnDataBound="ddlServicerOrg_DataBound" OnSelectedIndexChanged="ddlServicerOrg_IndexChanged"
                        AutoPostBack="false" AppendDataBoundItems="True" DataSourceID="ServiceLocationOrgODS" OnChange="_doPostBack('pnlModel','');">
                        <asp:ListItem></asp:ListItem>
                    </asp:DropDownList>
                </td>
                <td>
                <asp:UpdatePanel ID="pnlModel" runat="server">
                <ContentTemplate>
                    <asp:DropDownList ID="ddlModelNumber" runat="server" AutoPostBack="false" DataSource='<%# GetServicedModelforServicePartner() %>'
                        DataTextField="Text" DataValueField="Value" AppendDataBoundItems="True" OnInit="ddlModelNumber_Init" OnDataBound="ddlModelNumber_DataBound" Enabled="false">
                        <asp:ListItem></asp:ListItem>
                    </asp:DropDownList>
                    </ContentTemplate>
                    </asp:UpdatePanel>
                </td>
4

1 に答える 1

1

JavaScript でこれを行うことができます。コンボボックスの selectedIndexChanged に値を隠しフィールドに書き込み、2 番目のコンボボックスがあるパネルを更新することができます。次に、そのパネルで ajax ポストバックを強制して、2 番目のコンボボックスの内容を更新します。これを行う簡単な方法は、コンボボックスの selectedindexchanged イベントに、2 番目のコンボボックスを含むパネルの非表示のボタンをクリックさせることです。

http://keylimetie.com/blog/2007/12/3/how-to-make-an-ajax-postback-with-javascript/

そのリンクは、やりたいことを行うためのガイドラインとして機能します。

于 2012-05-24T22:39:38.537 に答える