2

我的页面 (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 一起使用,并在用户控件中单独使用。每次页面根据 radAjaxManager 中的设置从 productionEntry.aspx 页面异步回发。

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

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

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

4

2 回答 2

1

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

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

希望这会帮助其他人在路上......

于 2013-03-22T12:58:53.360 回答
1

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

我有一个网格作为数据输入面板 - 在编辑模式下有 3 个固定行。很有可能业务会回来并要求对相同数据进行“显示历史”视图,因此我想要构建一个网格(而不是固定表)以保护自己免受更改。

我没有使用 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;
    }

编辑:我正在使用监督演示者模式,其中允许视图在不涉及其他逻辑的情况下直接与模型对话。如果您正在做不同的事情,这可能需要额外的开销。

于 2013-07-22T20:55:54.820 回答