我在字符串生成器中使用RenderControl在asp:TreeView中添加一个下拉列表。我的dropdownlist设置为autopostback,并且我在SelectedIndexChanged上附加了一个事件。不幸的是,我在树视图中看到我的下拉列表被正确地填充了,但是改变选择并不会引发事件。
下面是我的代码:
DropDownList ddlTest = new DropDownList();
ddlTest.Items.Add("test");
ddlTest.Items.Add("test2");
ddlTest.AutoPostBack = true;
ddlTest.SelectedIndexChanged += ddlTest_SelectedIndexChanged;
TreeNode node = new TreeNode();
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter writer = new HtmlTextWriter(sw);
ddlTest.RenderControl(writer);
node.Text = sb.ToString();
node.ShowCheckBox = false;下拉列表或类似的东西上没有RegisterEvent的方法。有没有办法实现我想要做的事情?
发布于 2009-04-06 15:14:56
对于任何类型的事件挂钩,Render/RenderControl通常都为时已晚。请尝试使用PreRender。
发布于 2009-04-06 16:52:27
为了使您的down能够接收事件,它必须作为某个控件的集合中的控件存在。它还可能需要一个唯一的ID (这取决于许多情况)。
现在,将下拉菜单的呈现html编写为文本。它可能有也可能没有doPostBack功能。如果是这样的话,框架就没有办法处理它,因为没有控件可以处理。
由于TreeNode没有Controls集合,您可以尝试添加一个隐藏的下拉列表,以您所做的方式呈现其余部分,并以这种方式愚弄框架。然而,这是棘手的,因为你必须处理验证,可见性,ID等。
您也可以尝试自己处理回发事件。假设您正确地形成了__doPostBack,在页面加载中检查Request.Form"__EVENTTARGET“和Request.Form"__EVENTARGUMENT”并进行相应的处理。
你也可以尝试创建你自己的树形视图...
https://stackoverflow.com/questions/721854
复制相似问题