Asp.NET DropDownList在PostBack之后重置SelectedIndex

前端之家收集整理的这篇文章主要介绍了Asp.NET DropDownList在PostBack之后重置SelectedIndex前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在网上做了很多研究后,我仍然对这个问题感到难过.我有一个页面,将名称和类别的数量加载到下拉列表中.我只会这样做!(Page.IsPostBack).当AutoPostBack触发SelectedIndex = 0.我尝试了几种不同的东西.这是我的代码

  1. <form id="AddAssignmentForm" runat="server">
  2. <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
  3.  
  4. <asp:UpdatePanel ID="CommentUpdate" runat="server">
  5. <ContentTemplate>
  6.  
  7. Add Comment
  8. <asp:DropDownList ID="ddlCategory" runat="server" Width="206" OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" AutoPostBack="true" />
  9. <asp:TextBox ID="txtName" runat="server" Width="200" />
  10. <asp:TextBox ID="txtAbbrv" runat="server" Width="200" />
  11. <asp:TextBox ID="txtDescription" runat="server" Width="200" Height="90" TextMode="MultiLine" />
  12.  
  13. </ContentTemplate>
  14. </asp:UpdatePanel>
  15. </form>

这是后端代码.

  1. private void Page_Load(object sender,System.EventArgs e)
  2. {
  3. if (!Page.IsPostBack)
  4. {
  5. GetCategories();
  6. }
  7. }
  8.  
  9. public void GetCategories()
  10. {
  11. String strsql = @"SELECT Name,Total
  12. FROM MyTable";
  13.  
  14. if (con.State == ConnectionState.Closed)
  15. con.Open();
  16.  
  17. OleDbCommand cmdsql = new OleDbCommand(strsql,con);
  18. OleDbDataReader cmdReader = cmdsql.ExecuteReader();
  19.  
  20. if (cmdReader.HasRows)
  21. {
  22. while (cmdReader.Read())
  23. {
  24. ddlCategory.Items.Add(new ListItem(cmdReader["Category_Name"].ToString(),cmdReader["Total"].ToString()));
  25.  
  26. }
  27. ddlCategory.SelectedIndex = -1;
  28. }
  29.  
  30.  
  31. cmdReader.Close();
  32. con.Close();
  33. }
  34.  
  35. public void FillForm(int index)
  36. {
  37. ListItem item = ddlCategory.Items[index];
  38. txtName.Text = item.Text + " " + (Convert.ToInt32(item.Value) + 1).ToString();
  39. txtAbbrv.Text = item.Text.Substring(0,1) + (Convert.ToInt32(item.Value) + 1).ToString();
  40. }
  41.  
  42. public void ddlCategory_SelectedIndexChanged(Object sender,EventArgs e)
  43. {
  44. //When I break here SelectedIndex always = 1.
  45. FillForm(ddlCategory.SelectedIndex);
  46. }

我只是希望能够根据所选索引填充表单,但我似乎无法得到正确的答案.任何帮助表示赞赏.

解决方法

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

猜你在找的asp.Net相关文章