在網上做了很多研究之後,我仍然被這個問題困住了。我有一個頁面將類別的名稱和計數加載到下拉列表中。我只在!(Page.IsPostBack)
時這樣做。當AutoPostBack
觸發SelectedIndex = 0
。我嘗試了幾個不同的東西。這裏是我的代碼:Asp.NET DropDownList在回傳後重置SelectedIndex
PAGE
<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);
}
我只是想能夠根據選定的索引填充表單,但我似乎無法得到正確的答案。任何幫助表示讚賞。
我假設你已經啓用視圖狀態?您是否檢查過請求以查看該控件返回的值是什麼?下拉菜單中有多少項目? – Dan 2011-04-13 21:49:52
我很確定我遇到過這個問題。你可以嘗試使更新面板有條件,並設置異步回發觸發到DropDownLists selectedindex更改事件? – 2011-04-13 21:51:43
現在在下拉菜單中有4個項目。我不確定你的意思是通過檢查請求來查看返回的值。我檢查了SelectedIndexChanged中的ddlCategory.SelectedIndex,它總是1. – Genzume 2011-04-13 21:53:13