下面是我的动态下拉列表代码。它确实正确生成HTML。但是,该事件未被触发。而且,当我将事件名称更改为“onchange”时,它会给我一个编译错误,说它找不到脚本。通过它在我的代码隐藏中。
另外,我在OnInit页面事件中添加了这个。
pValueCmbBox.Attributes.Add("runat", "server");
pValueCmbBox.SelectedIndexChanged += new EventHandler(ddlParent_SelectedIndexChanged);
pValueCmbBox.Attributes.Add("OnSelectedIndexChanged", "ddlParent_SelectedIndexChanged");
pValueCmbBox.Attributes.Add("AutoPostBack", "True");
答案 0 :(得分:0)
回答我自己的问题......
我最终制作了一个ASCX,现在它工作正常!
答案 1 :(得分:0)
1)它不起作用,因为你没有按照你应该的方式添加属性“AutoPostBack”。
pValueCmbBox.Attributes.Add("runat", "server"); //doesn't make sense...it's just for decoration...because you can't use in page behind code
pValueCmbBox.SelectedIndexChanged += new EventHandler(ddlParent_SelectedIndexChanged); //this line it's okay
pValueCmbBox.Attributes.Add("OnSelectedIndexChanged", "ddlParent_SelectedIndexChanged"); //this it's not necessary at all...because you already specified through pValueCmbBox.SelectedIndexChanged
pValueCmbBox.Attributes.Add("AutoPostBack", "True"); //this is the problem
正如您在here中看到的那样, SelectedIndexChanged “当列表控件中的选择在发布到服务器的帖子之间发生更改时发生。” 。所以你对AutoPostBack = true有个好主意;你应该写:
pValueCmbBox.AutoPostBack = true;
现在针对runat="server"
问题,您可以将功能设置为以下功能:
protected void ddlParent_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList c = (DropDownList)sender; //this is your pValueCmbBox that you set it in OnInit
//more code here
}
2) onchange适用于javascript,但对于c#/ vb,您可以使用 OnTextChanged
3)你可以这样做,就像你已经尝试过的那样......或者我告诉你的方式。 :)