radGrid中的异步回发editForm userControl

时间:2013-03-21 14:00:32

标签: asp.net telerik asp.net-ajax

我的页面(productionEntry.aspx)有一个radGrid,它包含一个radAjaxManager,其设置允许radGrid的异步回发:

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadGridProductionOrders">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGridProductionOrders" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>

所以RadGridProduictionOrders异步回发,这很好。

然而,现在,radGrid的editForm是一个弹出式用户控件,我想要完成的是异步回发一些用户控件的内容。 我已尝试将radAjaxManagerProxy和radAjaxPanel一起使用,并在用户控件中单独使用。 每次页面根据来自productionEntry.aspx页面的radAjaxManager中的设置异步回发。

这是用户控件中radAjaxManagerProxy的标记。我想回发的内容是在Panel1中:

<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
    <telerik:AjaxSetting AjaxControlID="Panel1">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="Panel1" />
        </UpdatedControls>
    </telerik:AjaxSetting>
</AjaxSettings>

我如何设置页面和/或用户控件来完成我需要的工作?

2 个答案:

答案 0 :(得分:1)

我就这个问题联系了telerik,他们的答复是不可能的:

虽然编辑表单位于弹出窗口中,但它仍然是RadGrid的一部分。在服务器上,弹出控件呈现为RadGrid的一部分,因此它是RadGrid的组成部分。 牢记这一点,并且知道RadGrid是一个复合控件,应该作为一个整体进行更新,我担心RadajaxManager无法满足您的要求。回发将始终由RadGrid进行,您将需要始终更新RadGrid,它将关闭并重置编辑表单中的值。

希望这会帮助其他人继续前进......

答案 1 :(得分:1)

我知道已经有一段时间了,但这就是我所建立的和我所做的:

我有一个网格作为数据输入面板 - 在编辑模式下有3个固定行。有一种情况很可能是企业会回来并要求提供相同数据的“显示历史”视图,因此网格是我想要构建的(而不是固定的表格)以保护自己免受变化。 / p>

我没有使用GridBoundColumn,而是使用带有edititemtemplate的GridTemplate列,如下所示:

<EditItemTemplate>
    <telerik:RadTextBox runat="server" ID="Address1" Text='<%#Bind("Address1") %>' OnTextChanged="Address1_OnTextChanged" AutoPostBack="True"></telerik:RadTextBox>
    <asp:UpdatePanel runat="server"><Triggers><asp:AsyncPostBackTrigger ControlID="Address1"/></Triggers></asp:UpdatePanel>
</EditItemTemplate>

这允许我在每个文本框中每行进行一次简单的数据绑定回调,而不会对前端进行任何图形更改或中断用户体验。这会在页面上产生额外的开销,但应该可以忽略不计。

代码隐藏看起来像:

protected void Address1_OnTextChanged(object sender, EventArgs e)
    {
        //Find which row you're on
        var id = ((sender as RadTextBox).Parent.Parent as GridDataItem).GetDataKey("ID");
        //Do whatever you need to do with the data by using the ID to match.
        myList[id].Address1 = (sender as RadTextBox).Text;
    }

编辑:我正在使用Supervising Presenter模式,在没有其他逻辑的情况下,允许视图直接与模型对话。如果你做的不同,这可能需要额外的开销。

相关问题