2016-03-29 16 views
0

私はTelerik RadGridバッチ編集の機能を使用しています。私は自動保存機能を実装しようとしています。 http://docs.telerik.com/devtools/aspnet-ajax/controls/grid/data-editing/edit-mode/batch-editing/client-side-api:私は、タイマー(ネイティブブラウザsetInterval()メソッドを使用)し、グリッドのクライアント側のAPI(saveChanges(tableView)またはsaveAllChanges()方法を参照)を作成しますTelerik RadGridで自動保存機能を提供するには?

<form id="form1" runat="server"> 
     <div id="Demo"> 
     <telerik:RadListBox RenderMode="Lightweight" runat="server" ID="SavedChangesList" Width="600px" Height="200px" Visible="false"></telerik:RadListBox> 
     <telerik:RadGrid RenderMode="Lightweight" ID="RadGrid1" GridLines="None" runat="server" AllowAutomaticDeletes="True" 
      AllowAutomaticInserts="True" PageSize="10" OnItemDeleted="RadGrid1_ItemDeleted" OnItemInserted="RadGrid1_ItemInserted" 
      OnItemUpdated="RadGrid1_ItemUpdated" OnPreRender="RadGrid1_PreRender" AllowAutomaticUpdates="True" AllowPaging="True" 
      AutoGenerateColumns="False" OnBatchEditCommand="RadGrid1_BatchEditCommand" DataSourceID="SqlDataSource1"> 
      <MasterTableView CommandItemDisplay="TopAndBottom" DataKeyNames="ID" 
       DataSourceID="SqlDataSource1" HorizontalAlign="NotSet" EditMode="Batch" AutoGenerateColumns="False"> 
       <BatchEditingSettings EditType="Cell" /> 
       <SortExpressions> 
        <telerik:GridSortExpression FieldName="ID" SortOrder="Descending" /> 
       </SortExpressions> 
       <Columns> 

       </Columns> 
      </MasterTableView> 
      <ClientSettings AllowKeyboardNavigation="true"></ClientSettings> 
     </telerik:RadGrid> 
    </div> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=STRMV3097\MSSQLSERVER2012;Initial Catalog=ToolsandTechResearchShowcase;User ID=pra_app_user;Password=pra" 
     DeleteCommand="Delete Command" InsertCommand="Insert Command" 
     SelectCommand="Select" UpdateCommand="Update"> 
    </asp:SqlDataSource> 
</form> 

答えて

0

の下に私のコードを追加しています。 grid.get_batchEditingManager()のようなメソッドを持つバッチ編集マネージャへの参照が必要です。ここで、gridはRadGridへの参照です。ここで

はあなたがすぐに実行することができるはずの基本的な例である

 <telerik:RadGrid ID="RadGrid1" runat="server" MasterTableView-EditMode="Batch" AllowAutomaticDeletes="True" 
         AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowPaging="True" PageSize="10" DataSourceID="SqlDataSource1"></telerik:RadGrid> 
     <telerik:RadCodeBlock runat="server" ID="RadCodeBlock1"> 
      <script> 
       var autoSaveInterval = null; 

       //store the interval so you can cancel it at any time you like 
       function saveGridChanges() { 
        var grid = $find("<%=RadGrid1.ClientID%>");//reference the grid 
        var batchEditManager = grid.get_batchEditingManager();//get the batch edit manager 
        batchEditManager.saveAllChanges();//use its API to save the changes 
       } 
       //use the Sys.Application.Load event as this is the earliest point at which IScriptControl client-side objects can be accessed 
       Sys.Application.add_load(function() { 
        autoSaveInterval = window.setInterval(saveGridChanges, 30000); 
       }); 
      </script> 
     </telerik:RadCodeBlock> 
     <%--Optionally, add AJAX for a loading indicator--%> 
     <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Black"></telerik:RadAjaxLoadingPanel> 
     <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1"> 
      <AjaxSettings> 
       <telerik:AjaxSetting AjaxControlID="RadGrid1"> 
        <UpdatedControls> 
         <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
        </UpdatedControls> 
       </telerik:AjaxSetting> 
      </AjaxSettings> 
     </telerik:RadAjaxManager> 

     <%--Data source. Here is the one from the Telerik demo--%> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
          DeleteCommand="DELETE FROM [Products] WHERE [ProductID] = @ProductID" InsertCommand="INSERT INTO [Products] ([ProductName], [CategoryID], [UnitPrice], [Discontinued], [QuantityPerUnit], [UnitsInStock]) VALUES (@ProductName, @CategoryID, @UnitPrice, @Discontinued, @QuantityPerUnit, @UnitsInStock)" 
          SelectCommand="SELECT [ProductID], [ProductName], [Products].[CategoryID], [Categories].[CategoryName] as CategoryName, [UnitPrice], [Discontinued], [QuantityPerUnit], [UnitsInStock] FROM [Products] JOIN Categories ON Products.CategoryID=Categories.CategoryID" 
          UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName, [CategoryID] = @CategoryID, [UnitPrice] = @UnitPrice, [Discontinued] = @Discontinued, [QuantityPerUnit] = @QuantityPerUnit, [UnitsInStock] = @UnitsInStock WHERE [ProductID] = @ProductID"> 
      <DeleteParameters> 
       <asp:Parameter Name="ProductID" Type="Int32"></asp:Parameter> 
      </DeleteParameters> 
      <InsertParameters> 
       <asp:Parameter Name="ProductName" Type="String"></asp:Parameter> 
       <asp:Parameter Name="CategoryID" Type="Int32"></asp:Parameter> 
       <asp:Parameter Name="UnitPrice" Type="Decimal"></asp:Parameter> 
       <asp:Parameter Name="Discontinued" Type="Boolean"></asp:Parameter> 
       <asp:Parameter Name="QuantityPerUnit" Type="String"></asp:Parameter> 
       <asp:Parameter Name="UnitsInStock" Type="Int16"></asp:Parameter> 
      </InsertParameters> 
      <UpdateParameters> 
       <asp:Parameter Name="ProductName" Type="String"></asp:Parameter> 
       <asp:Parameter Name="CategoryID" Type="Int32"></asp:Parameter> 
       <asp:Parameter Name="UnitPrice" Type="Decimal"></asp:Parameter> 
       <asp:Parameter Name="Discontinued" Type="Boolean"></asp:Parameter> 
       <asp:Parameter Name="QuantityPerUnit" Type="String"></asp:Parameter> 
       <asp:Parameter Name="UnitsInStock" Type="Int16"></asp:Parameter> 
       <asp:Parameter Name="ProductID" Type="Int32"></asp:Parameter> 
      </UpdateParameters> 
     </asp:SqlDataSource> 

私はまた、ユーザが現在編集している間の間隔を旗を上げおよび/またはキャンセルする他のバッチ編集イベントのハンドラを追加する助言セル/行を使用してデータの損失や問題を防止します。

+0

私は上記のコードを追加しました。親切に見て、もう少し説明できますか? –

+0

私が概説したJavaScriptロジックを実装しようとしましたか?試してみるときに遭遇する正確な問題は何ですか? – rdmptn

+0

いいえ、私はそれを試していませんでした。実際に私はそれを理解していませんでした。 –

関連する問題