【问题标题】:invoke method batcheditcommand from C#.net [duplicate]从 C#.net 调用方法 batcheditcommand [重复]
【发布时间】:2015-05-03 03:52:57
【问题描述】:

我使用了telerik:RadGrid 批量编辑;为了填充这个网格,我使用了以下语法:

function GridBind(GridID, GridData) {
    var TableView = GridID.get_masterTableView();
    TableView.set_dataSource(GridData); TableView.dataBind();
}

调用batcheditcommand 我使用了以下语法。它是在非回发按钮 Javascript 事件下编写的:

function SaveAllChanges(sender,args) {
    var batchManager = $find('<%=RadGrid1.ClientID%>').get_batchEditingManager();
    var tableViews = [];
    tableViews.push($find('<%=RadGrid1.ClientID%>').get_masterTableView());
    batchManager.saveTableChanges(tableViews);
}

但不幸的是它没有触发服务器事件RadGrid1_BatchEditCommand,所以我想从 C#.net 中的代码调用 Radgrid batcheditcommand

【问题讨论】:

    标签: javascript asp.net telerik telerik-grid radgrid


    【解决方案1】:

    一个对我有用的快速 POC:

    标记:

        <telerik:RadGrid ID="RadGrid1" runat="server" OnBatchEditCommand="RadGrid1_BatchEditCommand">
            <MasterTableView EditMode="Batch">
                <Columns>
                    <telerik:GridBoundColumn DataField="first"></telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="second"></telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
        </telerik:RadGrid>
        <asp:Button ID="Button1" Text="bind grid" OnClientClick="bindTheGrid(); return false;" runat="server" />
        <asp:Button ID="Button2" Text="save grid" OnClientClick="SaveAllChanges(); return false;" runat="server" />
        <script>
            function bindTheGrid() {
                var grid = $find("<%=RadGrid1.ClientID%>");
                var data = [{ first: 1, second: 1 }, { first: 2, second: 2 }];
                GridBind(grid, data);
            }
            function GridBind(GridID, GridData) {
                var TableView = GridID.get_masterTableView();
                TableView.set_dataSource(GridData);
                TableView.dataBind();
            }
    
            function SaveAllChanges(sender, args) {
                var batchManager = $find('<%=RadGrid1.ClientID%>').get_batchEditingManager();
                var tableViews = [];
                tableViews.push($find('<%=RadGrid1.ClientID%>').get_masterTableView());
                batchManager.saveTableChanges(tableViews);
            }
        </script>
    

    和服务器代码

    protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                RadGrid1.DataSource="";
                RadGrid1.DataBind();
            }
        }
        protected void RadGrid1_BatchEditCommand(object sender, GridBatchEditingEventArgs e)
        {
            Response.Write(DateTime.Now.ToString());
        }
    

    您需要在客户端绑定上做一些工作。

    确保没有脚本错误。

    在第一个函数中,你是在GridID对象中传递一个网格对象还是一个ID?如果只有和 ID,请先使用 $find() 获取引用。

    【讨论】:

    • rdmptn 感谢您的回复,我已经实现了您的技术 SaveAllChanges(sender, args) 。请检查我的问题描述。此方法创建一个回发事件,我想在没有回发的情况下调用此 savechage 方法。假设此方法调用web方法或服务。感谢您的回复
    • 它应该调用回发,因为这是您在 ASP 中发送信息的标准方式。清楚地解释您的问题,因为您现在有 6-7 个部分问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多