1

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);
}

それでも運がない。このドロップダウンメニューがデータベースに保存されているものの正しいテキストを更新および表示/表示できない理由を理解するための助けをいただければ幸いです。

-乾杯

4

2 に答える 2

1

DropDownList.SelectedValue物件を利用してみませんか?

例えば:

ddResultNum.SelectedValue = resultValue;
于 2012-07-31T23:02:59.030 に答える
0

SelectedIndexDDL自体にプロパティを設定する必要があります。そのように(インデックスはゼロベースであることを忘れないでください):

        switch (resultValue)
        {
            case "10":   
                ddResultNum.SelectedIndex = 0;
                break;
            case "20":
                ddResultNum.SelectedIndex = 1; 
                break;
            case "30":
                ddResultNum.SelectedIndex = 2;
                break;
            case "40":
                ddResultNum.SelectedIndex = 3;
                break;
            case "50":
                ddResultNum.SelectedIndex = 4;
                break;
            case "100":
                ddResultNum.SelectedIndex = 5;
                break;
        }
于 2012-07-31T22:53:31.687 に答える