Asp.net

Asp.NET DropDownList 在 PostBack 後重置 SelectedIndex

  • November 13, 2017

在網上做了很多研究之後,我仍然被這個問題難住了。我有一個頁面,將類別的名稱和計數載入到下拉列表中。我只在!(Page.IsPostBack). 當AutoPostBack觸發SelectedIndex = 0. 我嘗試了幾種不同的方法。這是我的程式碼:

<form id="AddAssignmentForm" runat="server">
<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />

<asp:UpdatePanel ID="CommentUpdate" runat="server">
<ContentTemplate>

Add Comment
<asp:DropDownList ID="ddlCategory" runat="server" Width="206" OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" AutoPostBack="true" />
<asp:TextBox ID="txtName" runat="server" Width="200" />
<asp:TextBox ID="txtAbbrv" runat="server" Width="200" />
<asp:TextBox ID="txtDescription" runat="server" Width="200" Height="90" TextMode="MultiLine" />

</ContentTemplate>
</asp:UpdatePanel>
</form>

這是後端程式碼。

private void Page_Load(object sender, System.EventArgs e)
{
   if (!Page.IsPostBack)
   {
       GetCategories();
   }
}

public void GetCategories()
{
   String strSql = @"SELECT Name, Total
                       FROM MyTable";

   if (con.State == ConnectionState.Closed)
       con.Open();

   OleDbCommand cmdsql = new OleDbCommand(strSql, con);
   OleDbDataReader cmdReader = cmdsql.ExecuteReader();

   if (cmdReader.HasRows)
   {
       while (cmdReader.Read())
       {
           ddlCategory.Items.Add(new ListItem(cmdReader["Category_Name"].ToString(), cmdReader["Total"].ToString()));

       }
       ddlCategory.SelectedIndex = -1;
   }


   cmdReader.Close();
   con.Close();
}

public void FillForm(int index)
{
   ListItem item = ddlCategory.Items[index];
   txtName.Text = item.Text + " " + (Convert.ToInt32(item.Value) + 1).ToString();
   txtAbbrv.Text = item.Text.Substring(0, 1) + (Convert.ToInt32(item.Value) + 1).ToString();
}

public void ddlCategory_SelectedIndexChanged(Object sender, EventArgs e)
{
   //When I break here SelectedIndex always = 1.
   FillForm(ddlCategory.SelectedIndex);
}

我只是希望能夠根據選定的索引填充表單,但我似乎無法得到正確的答案。任何幫助表示讚賞。

我發現了問題。從我的 SQL 語句填充的值包含重複的值。由於某種原因,這導致整個事情以奇怪的方式發生故障,因此每次我選擇一個 ListItem 時,整個列表都會重置。通過確保沒有重複值,程式碼開始完美執行。感謝大家的幫助。

為下拉列表添加 AppendDataBoundItems=“true”

引用自:https://stackoverflow.com/questions/5656058