10

我有一种感觉我错过了一些非常明显的东西,我无法捕获我的 DropDownList 的选定值;该值重新启动列表中的第一项。我已将 DropListList自动回发属性设置为true。我有一个 SelectedIndexChangedEvent 粘贴在下面。这不在母版页上。

protected void ddlRestCity_SelectedIndexChanged(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        r_city = ddlRestCity.SelectedValue.ToString();
    }
}

这是 DropDownList 控件:

<asp:DropDownList ID="ddlRestCity" runat="server" 
        Width="100px" AutoPostBack="True" 
        onselectedindexchanged="ddlRestCity_SelectedIndexChanged">
</asp:DropDownList>

提前感谢您的帮助!

4

3 回答 3

12

我的即兴猜测是您可能正在重新填充回发的列表,这导致所选索引被重置。

于 2011-08-05T14:23:46.380 回答
8

你的DataBind()电话在哪里?你!IsPostBack打电话前检查吗?例如:

protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        ddlRestCity.DataSource = ...;
        ddlRestCity.DataBind();
    }
}

说明:如果您不检查!IsPostBackbefore ,列表将在触发之前DataBind()重新填充(因为在子事件之前 触发,例如)。然后触发时,“选定项”现在是新填充列表中的第一项。SelectedIndexChangedPage.LoadSelectedIndexChangedSelectedIndexChanged

于 2011-08-05T14:23:19.530 回答
0

什么是 r_city?

如果它是一个文本框,那么你需要做类似的事情r_city.text = ...

另外——您可能会考虑删除您的回发检查。通常,这在 page.onload 事件中最有用,通常,您正在检查if NOT ispostback...

于 2011-08-05T14:40:45.427 回答