我有一种感觉我错过了一些非常明显的东西,我无法捕捉DropDownList的选定值;该值将重新启动列表中的第一个项目。我已将DropListList autopostback 属性设置为 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>
Thanx提前帮助你!
答案 0 :(得分:12)
我的袖口猜测是你可能会重新填充帖子后面的列表,这会导致所选索引重置。
答案 1 :(得分:8)
您的DataBind()
电话在哪里?你在通话前检查!IsPostBack
了吗?例如:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
ddlRestCity.DataSource = ...;
ddlRestCity.DataBind();
}
}
说明:如果您在!IsPostBack
之前未检查DataBind()
,则该列表将在 SelectedIndexChanged
之前重新填充被触发(因为Page.Load
在子事件(例如SelectedIndexChanged
)之前触发。当SelectedIndexChanged
被触发时,“选定项目”现在是新填充列表中的第一个项目。
答案 2 :(得分:0)
什么是r_city?
如果是文本框,则需要执行r_city.text = ...
另外 - 您可以考虑删除回发检查。通常,这在page.onload事件中最有用,通常,您正在检查if NOT ispostback
...