我有这个控制权:
<asp:DropDownList ID="ddlPaging" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlPaging_SelectedIndexChanged">
</asp:DropDownList>
这里我如何将服务器端的数据绑定到上面的控件:
ddlPaging.Visible = true;
ddlPaging.DataSource = Enumerable.Range(0, features.Count()).ToList();
ddlPaging.DataBind();
当我在DropDownList中选择postBack累积并触发此函数时:
protected void Page_Load(object sender, EventArgs e)
{
string controlId= this.FindControl(this.Request.Params.Get("__EVENTTARGET")).ID
//always empty
string ctrlarg1 = this.Request.Params.Get("__EVENTARGUMENT");
string ctrlarg2 = Request.Form["__EVENTARGUMENT"];
string ctrlarg3 = Request.Params["__EVENTARGUMENT"];
string ctrlarg4 = this.Request["__EVENTARGUMENT"];
string ctrlarg5 = this.Request.Params.Get("__EVENTARGUMENT");
if (!isPaging)
{
ddlPaging.Visible = true;
ddlPaging.DataSource = Enumerable.Range(0, features.Count()).ToList();
ddlPaging.DataBind();
}
}
当触发Page_Load方法时,我需要在下拉列表中获取所选项目。
我这样试试:
string ctrlarg1 = this.Request.Params.Get("__EVENTARGUMENT");
string ctrlarg2 = Request.Form["__EVENTARGUMENT"];
string ctrlarg3 = Request.Params["__EVENTARGUMENT"];
string ctrlarg4 = this.Request["__EVENTARGUMENT"];
string ctrlarg5 = this.Request.Params.Get("__EVENTARGUMENT");
但结果是空的。
当我以这种方式获得控制ID时:
string controlId= this.FindControl(this.Request.Params.Get("__EVENTTARGET")).ID
它完美无缺!
所以我的问题是,如何在Page_Load方法的下拉列表中获取所选项?
答案 0 :(得分:2)
我建议你不要在Page_Load中这样做。 DropDownList类上有一个SelectedIndexChanged事件,恰好就此而言。
<asp:DropDownList runat="server"
ID="_ddlMyDdl"
AutoPostBack="True"
OnSelectedIndexChanged="MyEventHandler"/>
然后在你的代码隐藏中:
protected void MyEventHandler(object sender, EventArgs e)
{
var selectedId = _ddlMyDdl.SelectedIndex; // or ((DropDownList) sender).SelectedIndex
}