C#和Telerik:确定弹出式关闭的适当用户控件

C#和Telerik:确定弹出式关闭的适当用户控件,c#,asp.net,user-controls,telerik,C#,Asp.net,User Controls,Telerik,我必须重用我在一个页面上多次创建的用户控件。此用户控件有一个列表框和一个按钮。单击按钮时,将打开一个窗口,并在关闭时将一些值发送回调用者。我必须在弹出窗口关闭时确定适当的用户控件,并用返回的值填充列表框 我在这里遇到了两个问题。其中一个问题是,如何从弹出窗口中识别正在调用的用户控件。第二,我的ajaxrequest代码有问题吗?即使我硬编码了值,列表框也不会被填充 Parent.aspx <telerik:RadScriptManager ID="RadScriptManager1" ru

我必须重用我在一个页面上多次创建的用户控件。此用户控件有一个列表框和一个按钮。单击按钮时,将打开一个窗口,并在关闭时将一些值发送回调用者。我必须在弹出窗口关闭时确定适当的用户控件,并用返回的值填充列表框

我在这里遇到了两个问题。其中一个问题是,如何从弹出窗口中识别正在调用的用户控件。第二,我的ajaxrequest代码有问题吗?即使我硬编码了值,列表框也不会被填充

Parent.aspx

<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.
            }
        }