我正在尝试在更改所选项目时将DropDownList设置为AutoPostBack。为什么这不起作用,我有点疯狂。
有没有人有任何想法?请帮助
这是代码: -
<asp:DropDownList ID="ddl_username" runat="server"
AutoPostBack="True"
onselectedindexchanged="ddl_username_SelectedIndexChanged"
DataTextField="Shortname" DataValueField="ID">
</asp:DropDownList>`
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind_Users();
}
}
private DataSet Bind_Users()
{
DataSet ds;
ds = cs.BindUsers();
if (ds.Tables[0] != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
ddl_username.DataSource = ds.Tables[0];
ddl_username.DataTextField = "Shortname";
ddl_username.DataValueField = "ID";
ddl_username.DataBind();
ListItem li = new ListItem();
li.Text = "Select";
li.Value = "-1";
ddl_username.Items.Insert(0, li);
ddl_username.SelectedIndex = 0;
}
//ddl_username.SelectedIndex = 0;
//ddl_username.Text = "-----Select-----";
}
return ds;
}
答案 0 :(得分:1)
您是否检查过重新发布后是否再次发生ddl的初始加载?只需在您的select-index-changed方法中添加一个调试断点,然后在oninit / page-load方法中添加一个调试断点 - 无论您将数据加载到ddl。 如果它在触发你的事件之前再次加载 - 你需要放一个
if(!IsPostBack)
在加载方法之前 - 比如:
if(!IsPostBack)
this.MyDDL.DataSource = GetDatasourceForMyDDL();
答案 1 :(得分:0)
Page_Load
,因此您必须将Bind_Users()
放入
if(!IsPostBack)
阻止,因为在Page_Load
ddl_username_SelectedIndexChanged