asp.netページ内に事前定義されたドロップダウンメニューがあります
<asp:DropDownList CssClass="queryterm dropdownSpacer" ID="ddResultNum" runat="server">
<asp:ListItem Text="10 Results " Value="10" />
<asp:ListItem Text="20 Results" Value="20" />
<asp:ListItem Text="30 Results" Value="30" />
<asp:ListItem Text="40 Results" Value="40" />
<asp:ListItem Text="50 Results" Value="50" />
<asp:ListItem Text="100 Results" Value="100" />
</asp:DropDownList>
コードビハインドでは、データベースへのクエリに基づいて選択した値を設定しようとしています。
protected void SetResultsDropDown()
{
string selectCommand = String.Format("SELECT ResultsReturned FROM StoredFilters WHERE SecurityUserID = {0}", securityUserId);
string resultValue = DatabaseUtilities.QueryDatabase(selectCommand, ConfigurationManager.AppSettings["informconnectstring"].ToString(), "ResultsReturned");
//based upon the users id the db stores the set number from the drop down the default is 10 however if the number changes when the page loads I want the user to see what their current result set being returned is in the drop down vs. it defaulting to the first option
ddResultNum.ClearSelection();
switch (resultValue)
{
case "10":
ddResultNum.Items[0].Selected = true;
break;
case "20":
ddResultNum.Items[1].Selected = true;
break;
case "30":
ddResultNum.Items[2].Selected = true;
break;
case "40":
ddResultNum.Items[3].Selected =true;
break;
case "50":
ddResultNum.Items[4].Selected = true;
break;
case "100":
ddResultNum.Items[5].Selected = true;
break;
}
}
onInitを使用して、またページの読み込み中にこのメソッドを呼び出してみました
protected override void OnInit( EventArgs e)
{
base.OnInit(e);
// Extract an Inform User ID from the Token.
IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)(Thread.CurrentPrincipal)).Identities[0];
securityUserId = Convert.ToInt64(claimsIdentity.Claims.Where(c =>
c.ClaimType == AuthenticationConstants.INFORM_USER_ID_CLAIM_TYPE).First().Value);
SetResultsDropDown();
}
スイッチがステップスルーしてオブジェクトを更新している間、ドロップダウンメニューの更新内にテキストが表示されません。常に10件の結果の最初の項目に設定されたままになります。
コントロールをudpatepanelでラップしてから、パネルで更新を呼び出して、レンダリングとページの読み込み時に強制的に更新できるかどうかを確認しました。
また、使用する代わりにItems[0].Selected
、選択したインデックスを次のように設定しようとしました。
protected void SetResultsDropDown()
{
string selectCommand = String.Format("SELECT ResultsReturned FROM StoredFilters WHERE SecurityUserID = {0}", securityUserId);
string resultValue = DatabaseUtilities.QueryDatabase(selectCommand, ConfigurationManager.AppSettings["informconnectstring"].ToString(), "ResultsReturned");
ddResultNum.ClearSelection();
ddResultNum.SelectedIndex = ddResultNum.Items.FindByValue(resultValue);
}
それでも運がない。このドロップダウンメニューがデータベースに保存されているものの正しいテキストを更新および表示/表示できない理由を理解するための助けをいただければ幸いです。
-乾杯