【问题标题】:asynchronous postback inside radGrid editForm userControlradGrid editForm userControl 内的异步回发
【发布时间】:2013-03-11 02:07:33
【问题描述】:

我的页面 (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>

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

【问题讨论】:

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


    【解决方案1】:

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

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

    希望这将有助于其他人在路上...

    【讨论】:

      【解决方案2】:

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

      我有一个网格作为数据输入面板 - 在编辑模式下固定 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;
          }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-27
        • 2013-01-31
        • 2011-03-08
        相关资源
        最近更新 更多