首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RenderControl注册回发事件?

如何使用RenderControl注册回发事件?
EN

Stack Overflow用户
提问于 2009-04-06 14:58:31
回答 2查看 4.3K关注 0票数 2

我在字符串生成器中使用RenderControl在asp:TreeView中添加一个下拉列表。我的dropdownlist设置为autopostback,并且我在SelectedIndexChanged上附加了一个事件。不幸的是,我在树视图中看到我的下拉列表被正确地填充了,但是改变选择并不会引发事件。

下面是我的代码:

代码语言:javascript
复制
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的方法。有没有办法实现我想要做的事情?

EN

回答 2

Stack Overflow用户

发布于 2009-04-06 15:14:56

对于任何类型的事件挂钩,Render/RenderControl通常都为时已晚。请尝试使用PreRender。

票数 1
EN

Stack Overflow用户

发布于 2009-04-06 16:52:27

为了使您的down能够接收事件,它必须作为某个控件的集合中的控件存在。它还可能需要一个唯一的ID (这取决于许多情况)。

现在,将下拉菜单的呈现html编写为文本。它可能有也可能没有doPostBack功能。如果是这样的话,框架就没有办法处理它,因为没有控件可以处理。

由于TreeNode没有Controls集合,您可以尝试添加一个隐藏的下拉列表,以您所做的方式呈现其余部分,并以这种方式愚弄框架。然而,这是棘手的,因为你必须处理验证,可见性,ID等。

您也可以尝试自己处理回发事件。假设您正确地形成了__doPostBack,在页面加载中检查Request.Form"__EVENTTARGET“和Request.Form"__EVENTARGUMENT”并进行相应的处理。

你也可以尝试创建你自己的树形视图...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/721854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档