C#和Telerik:确定弹出式关闭的适当用户控件
我必须重用我在一个页面上多次创建的用户控件。此用户控件有一个列表框和一个按钮。单击按钮时,将打开一个窗口,并在关闭时将一些值发送回调用者。我必须在弹出窗口关闭时确定适当的用户控件,并用返回的值填充列表框 我在这里遇到了两个问题。其中一个问题是,如何从弹出窗口中识别正在调用的用户控件。第二,我的ajaxrequest代码有问题吗?即使我硬编码了值,列表框也不会被填充 Parent.aspxC#和Telerik:确定弹出式关闭的适当用户控件,c#,asp.net,user-controls,telerik,C#,Asp.net,User Controls,Telerik,我必须重用我在一个页面上多次创建的用户控件。此用户控件有一个列表框和一个按钮。单击按钮时,将打开一个窗口,并在关闭时将一些值发送回调用者。我必须在弹出窗口关闭时确定适当的用户控件,并用返回的值填充列表框 我在这里遇到了两个问题。其中一个问题是,如何从弹出窗口中识别正在调用的用户控件。第二,我的ajaxrequest代码有问题吗?即使我硬编码了值,列表框也不会被填充 Parent.aspx <telerik:RadScriptManager ID="RadScriptManager1" ru
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxManager ID="RadAjaxManager" runat="server">
</telerik:RadAjaxManager>
<telerik:radwindowmanager id="RadWindowManager1" reloadonshow="true" showcontentduringload="false" runat="server" behavior="Default" initialbehavior="None" ></telerik:radwindowmanager>
<div>
<uc:Control ID="Ctrl1" runat="server"></uc:Control >
<uc:Control ID="Ctrl2" runat="server"></uc:Control >
<uc:Control ID="Ctrl3" runat="server"></uc:Control >
</div>
此外,所有3个用户控件都会在回发时执行。有什么办法可以预防吗?我已经有一段时间没有处理用户控件和telerik了,所以如果我遗漏了上面示例中的任何关键细节,请让我知道
我必须使用telerik,但不一定是ajaxrequest。我尝试了一些telerik演示中的javascript代码来填充列表框,但也没有成功
任何帮助/线索/方向赞赏
< P>以知道哪个控件被激发-考虑使用标志(例如,隐藏字段,或者在RADKEVER客户端对象中的自定义字段)。< /P> 关于AJAX设置-由于您通过管理器调用AJAX请求,因此您需要一个AJAX设置,管理器在其中更新您需要的conrtols。也许您需要以编程方式创建所需的AJAX设置:在回发后加载所有用户控件时-它们应该加载,否则将丢失。这就是ASP的操作方式。这不是Telerik特有的功能。我能够使用AjaxSettings更新第一个控件。父页面看起来像,但只有第一个控件得到更新。有什么我可能遗漏的建议吗?代码段中的ID有大写字母“C”,但AJAX设置没有。此外,RadAjaxManager的ID不应与其类名匹配,请将其更改为RadAjaxManager 1或类似的名称。
<telerik:RadCodeBlock runat="server" ID="RadCodeBlock1">
<script type="text/javascript">
function foo() {
var oWnd = radOpen('PopUp.aspx', "Title");
oWnd.add_close(OnClientClose);
return false;
}
function OnClientClose(oWnd) {
var ajaxManager = $find("<%= RadAjaxManager.GetCurrent(Page).ClientID %>");
ajaxManager.ajaxRequest('Processed return value');
return false;
}
</script>
</telerik:RadCodeBlock>
<telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="ListBox">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="ListBox" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManagerProxy>
<table>
<tr>
<td>
<asp:ListBox ID="ListBox" Width="100px" runat="server" />
</td>
<td>
<asp:Button ID="AddButton" runat="server" OnClientClick="return foo(); return false;" Text="Add" />
</td>
</tr>
</table>
protected void Page_Load(object sender, EventArgs e)
{
var manager = RadAjaxManager.GetCurrent(Page);
manager.AjaxRequest += new RadAjaxControl.AjaxRequestDelegate(RadAjaxManager1_AjaxRequest);
}
protected void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
{
if (!string.IsNullOrEmpty(e.Argument))
{
ListBox.Items.Add(new RadListBoxItem(e.Argument)); //This code runs without error but does not populate the list box. I even tried to harcode the control ID against which this code should run. The code ran only for the required control but listbox was not populated.
}
}