Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用RenderControl注册回发事件?_C#_Asp.net_Event Handling - Fatal编程技术网

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

C# 如何使用RenderControl注册回发事件?,c#,asp.net,event-handling,C#,Asp.net,Event Handling,我正在字符串生成器中使用RenderControl在asp:TreeView中添加dropdownlist。我的dropdownlist设置为autopostback,我在SelectedIndexChanged上附加了一个事件。不幸的是,我看到我的dropdownlist在我的树视图中正确填充,但更改选择并不会引发事件 这是我的密码: DropDownList ddlTest = new DropDownList(); ddlTest.Items.Add("test"); ddlTest.It

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

这是我的密码:

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;

没有方法在dropdownlist或类似的东西上注册Event。有什么方法可以实现我想做的吗?

对于任何类型的事件连接,渲染/渲染控制通常都很晚。尝试改用PreRender。

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

现在,将下拉列表的呈现html编写为文本。它可能有也可能没有doPostBack功能。如果它这样做了,框架就没有办法处理它,因为没有控制来处理

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

您也可以尝试自己处理回发事件。假设您正确地形成了uuu doPostBack,则在页面上加载检查Request.Form[“uuu EVENTTARGET”]和Request.Form[“uuu EVENTARGUMENT”]并进行相应的处理


您也可以尝试创建自己的treeview…

他不会得到任何连接——下拉列表不会添加到任何控件的集合中。很好,我忽略了这一部分:D但是我有一个解决方案:根据您的.net版本,您可以使用Page中的GetPostBackEventReference方法(已弃用)或ClientScriptManager手动生成回发调用,该回发调用可以设置为元素的onchange事件。