データバインドされたコントロールの値を取得するためのベスト プラクティスを見つけようとしています。私のアプリケーションが現在 (そして通常) 動作する方法は、ページの読み込み時に getSettings() などを呼び出し、DropDownLists または Repeater のそれぞれに対してデータベース呼び出しを行います。
今回は、クリックされたボタンに応じてデータを DropDownList にバインドします。アプリがデータベースに移動して必要な情報を取得する間、データが表示されるまでに遅延があります。
おそらくページが読み込まれるたびにデータベース呼び出しを行わずに、値の取得を処理するより良い方法があるかどうか疑問に思っています。念のため、いくつかのサンプルコードを含めました。
.aspx:
<asp:DropDownList ID="ddl" runat="server"></asp:DropDownList>
<asp:Button ID="btn1" runat="server" OnCommand="btn_Command" CommandName="change" CommandArgument="table1" />
<asp:Button ID="btn2" runat="server" OnCommand="btn_Command" CommandName="change" CommandArgument="table2" />
<asp:Button ID="btn3" runat="server" OnCommand="btn_Command" CommandName="change" CommandArgument="table3" />
<asp:Button ID="btn4" runat="server" OnCommand="btn_Command" CommandName="change" CommandArgument="table4" />
コードビハインド:
DBClass dbc = new DBClass();
protected void btn_Command (object sender, CommandEventArgs e){
if (e.CommandName == "change"){
ddl.DataSource = dbc.ExecuteQuery("SELECT * FROM " + e.CommandArgument);
ddl.DataTextField = "Text";
ddl.DataValueField = "Value";
ddl.DataBind();
}
}
結果をキャッシュする方法はありますか? これは DropDownList が 1 つしかないので大まかですが、ボタンごとに 1 つある場合でも、4 つのデータベース呼び出しを行わずにデータを取得する方法はありますか?
前もって感謝します。