C# 确定在使用多个更新面板时页面加载时需要重新创建哪些控件
我有一个包含多个更新面板的页面,每个面板都包含动态创建的用户控件,其中包含一个按钮控件 单击控件中的按钮时,该控件不再存在于页面加载事件中,因此无法引发控件中按钮的单击事件 为了解决这个问题,我目前正在每个页面加载事件中重新创建页面上的所有控件,但这显然会导致大量不必要的页面更新。在任何给定的部分回发中,唯一需要重新创建的控件是更新面板中包含已单击控件的控件 那么,我如何才能最好地识别在页面加载中单击了哪个控件,然后仅在相关更新面板中重新创建控件,以便能够访问该控件的单击事件 我知道我可以做到以下几点C# 确定在使用多个更新面板时页面加载时需要重新创建哪些控件,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,我有一个包含多个更新面板的页面,每个面板都包含动态创建的用户控件,其中包含一个按钮控件 单击控件中的按钮时,该控件不再存在于页面加载事件中,因此无法引发控件中按钮的单击事件 为了解决这个问题,我目前正在每个页面加载事件中重新创建页面上的所有控件,但这显然会导致大量不必要的页面更新。在任何给定的部分回发中,唯一需要重新创建的控件是更新面板中包含已单击控件的控件 那么,我如何才能最好地识别在页面加载中单击了哪个控件,然后仅在相关更新面板中重新创建控件,以便能够访问该控件的单击事件 我知道我可以做到以
if (ScriptManager1.IsInAsyncPostBack)
{
string clickedControlId = ScriptManager1.AsyncPostBackSourceElementID
}
但这并不是非常有用,因为知道控件的ID并不一定能帮助我识别它属于哪个更新面板。是否有方法在运行时创建控件时将命令参数添加到控件中,并在部分回发期间在页面加载事件中读取该命令参数
若否,有何其他建议?
非常感谢
Stewart1)停止使用更新面板它们增加了不必要的复杂性,造成了更多的问题,尤其是当一个页面中有多个问题时
2) 不要将Ajax功能与服务器端逻辑混用。您最终将编写大量代码来补偿其中一个
我的建议是:
不要使用更新面板保留生成初始页面加载的代码。使用常规按钮并使用onClick=“foobar\u ajax(id,…Update UI)”进行ajax调用以更新服务器上的数据,而不是使用.Net按钮发布到服务器。包括您正在单击的项(控件)的ID。完成ajax调用后,您可能不需要做任何事情,或者可以使用服务器上的一些新数据更新UI(我建议保存后刷新) 读:改为使用jQuery调用page方法。 1)停止使用更新面板它们增加了不必要的复杂性,造成了更多的问题,尤其是当一个页面中有多个问题时 2) 不要将Ajax功能与服务器端逻辑混用。您最终将编写大量代码来补偿其中一个 我的建议是: 不要使用更新面板
保留生成初始页面加载的代码。使用常规按钮并使用onClick=“foobar\u ajax(id,…Update UI)”进行ajax调用以更新服务器上的数据,而不是使用.Net按钮发布到服务器。包括您正在单击的项(控件)的ID。完成ajax调用后,您可能不需要做任何事情,或者可以使用服务器上的一些新数据更新UI(我建议保存后刷新) 读:改为使用jQuery调用page方法。
谢谢。我接受了你的建议,虽然一开始有点令人生畏,但我发现我现在可以更好地控制客户机和服务器之间传递的Qt数据,并且可以更好地控制UI,数据流量比以前少得多。谢谢。我接受了你的建议,虽然一开始有点令人生畏,但我发现我现在可以更好地控制客户机和服务器之间传递的Qt数据,并且可以更好地控制UI,数据流量比以前少得多