Asp.NET DropDownList 在回发后重置 SelectedIndex

标签 asp.net drop-down-menu autopostback

在网上做了很多研究后,我仍然被这个问题难住了。我有一个页面,将类​​别的名称和计数加载到下拉列表中。我仅在 !(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);
}

我只是希望能够根据所选索引填充表单,但我似乎无法得到正确的答案。如有任何帮助,我们将不胜感激。

最佳答案

为下拉列表添加 AppendDataBoundItems="true"

关于Asp.NET DropDownList 在回发后重置 SelectedIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656058/

相关文章:

asp.net - 如何延迟 ASP.NET AutoPostBack 以便首先触发 JavaScript?

javascript - <asp :Button> doesn't fire 'onclick' event with using UseSubmitBhaviour=false

jquery - 如何在mvc3操作链接中使用jquery添加删除类?

javascript - 用于预选下拉值的 YUI 自定义事件?

html - Suckerfish 菜单下拉菜单在 IE6 和 IE7 中不显示

javascript - 使用 'AutoPostBack=false' ,如何触发运行一些 JavaScript 后执行的回发?

asp.net - response.redirect 总是一个 http GET 响应吗?

asp.net - Windows Azure。获取唯一的应用程序实例 ID

基于下拉选择发送电子邮件和重定向的 PHP 表单

javascript - Asp.net 按钮事件单击而不进行回发。是否可以?