簡體   English   中英

DropDownList在PostBack之后丟失索引

[英]DropDownList lose index after PostBack

我有一個下拉列表,其中填充了來自SQL Server的數據。

我在Page_Init()事件中動態填充下拉列表。 根據值,選擇一個ListItem。

現在的問題是,當我在下拉列表中選擇另一個項目時,在回發之后,所選內容將重置為下拉列表中的第一個項目。

這是我的代碼的基本版本,不起作用:

        ArrayList AD_Group_Members = ActiveDirectory.GetMemberOfGroup("AD-Group");
        ArrayList ListMachines = SQLQuery.Read("Database", "SELECT idVM, RandomString, Computername, Owner, FROM VM ORDER BY Computername");

        for (int i = 0; i < ListMachines.Count; i++)
        {
            String RandomString = ((Hashtable)ListMachines[i])["RandomString"].ToString();
            String Owner = ((Hashtable)ListMachines[i])["Owner"].ToString();
            DropDownList DropDownList_Owner = new DropDownList();
            DropDownList_Owner.ID = "DropDownList_Owner_" + RandomString;
            DropDownList_Owner.Width = Unit.Percentage(95);
            DropDownList_Owner.AutoPostBack = true;
            DropDownList_Owner.EnableViewState = true;
            DropDownList_Owner.SelectedIndexChanged += DropDownList_Owner_SelectedIndexChanged;
            Div_Test.Controls.Add(DropDownList_Owner);
            for (int y = 0; y < AD_Group_Members.Count; y++)
            {
                ListItem ListItem = new ListItem();
                ListItem.Value = Owner;
                ListItem.Text = ((Hashtable)AD_Group_Members[y])["GivenName"].ToString() + " " + ((Hashtable)AD_Group_Members[y])["Surname"].ToString();
                if (((Hashtable)AD_Group_Members[y])["Username"].ToString().Equals(Owner))
                {
                    ListItem.Selected = true;
                }
                DropDownList_Owner.Items.Add(ListItem);
            }
        }

我的代碼中的問題在哪里,那不是例子,而是例子。 預先感謝

在這種情況下,您必須在頁面加載時填充下拉列表。 因為在每個帖子上,您的ddl都會再次填充並丟失其選定的索引。

if (!IsPostBack)
{
    //PopulateYourDDL here
}

您在Page_Init()填充了下拉列表,該列表在每次回發中都會被調用並重新填充您的下拉列表,因此會丟失selectedindex.So,因此您必須在!ispostback塊中填充下拉列表

if (!IsPostBack)
{
   //fill your dropdown here
}

我認為您應該對下拉列表具有唯一的值。 另外,由於您在數據值字段中有重復的值,因此也會出現問題。 它正在尋找第一個匹配項並選擇它。 您可以嘗試構造可以唯一標識的值。 如下所示:

COLUMN_NAME  DATA_TYPE
a            a_decimal
b            b_decimal
c            c_decimal
d            d_int
e            e_int
f            f_varchar
g            g_varchar
h            h_varchar
i            i_varchar
j            j_varchar

看看這個有用的資源 希望對您有所幫助!!! 在接受的答案部分中仔細查看那些評論!

在處理動態生成的Web控件時,還應避免使用SelectedIndex_Changed()函數。 將DropdownList綁定在Page_Init()或Page_PreInit()下。 如果要在選擇DropDownlist時執行某些功能, 請檢查此 確定要觸發的WebControl ID,然后在Page_PreInit()或Page_Init()中執行唯一的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM