如何在asp.net中删除jqgrid的选定记录c#

时间:2011-03-15 12:46:50

标签: asp.net

任何人都可以帮助删除asp.net c#中jqgrid的选定记录以获取以下代码

<script type="text/javascript">
        var x = screen.width;

        $(document).ready(function() {

            jQuery("#table1").jqGrid({
                url: 'griddata.aspx/DepartmentData?id=1',
                datatype: 'json',
                mtype: 'GET',

                colNames: ['Department', 'Dept Code', 'Contact Person', 'Contact Phone','Contact Email'],
                colModel: [
                        { name: 'Department', index: 'Department', width: 55 },
                        { name: 'Dept Code', index: 'Dept Code', width: 90 },
                        { name: 'Contact Person', index: 'Contact Person', width: 40, align: 'center' },
                        { name: 'Contact Phone', index: 'Contact Phone', width: 40, align: 'center' },
                        { name: 'Contact Email', index: 'Conatct Email', width: 40, align: 'center' }],


                pager: '#pager1',
                rowNum: 15,
                rowList: [10, 20, 30],
                sortname: 'Department',
                sortorder: "desc",
                loadonce: true,
                loadtext: "Loading....",
                shrinkToFit: true,
                multiselect: true,
                emptyrecords: "No records to view",
                width: x - 40,
                height: 230,
                rownumbers: true,
                caption: 'DepartmentTable'


            });
            jQuery("#table1").jqGrid('navGrid', '#pager1', { edit: true, add: true, del: true });


        });

 </script>

1 个答案:

答案 0 :(得分:1)

(可能是时候开始将这个对话从评论转移到答案了......)

我不是100%熟悉jqGrid中的这个特定功能(正如我在评论中所说,它自己的文档很难跟上它的开发),但基本上应该有两个东西中的一个“删除“功能正在寻找:

  • 用于发送预定删除请求的URL。可能是在查询字符串上有一些参数的GET请求,尽管这不确定。此URL可以高度配置。您需要找到配置的位置/方式(除非您能指出我正在使用的文档/教程,也许我可以从那里帮助)。
  • 删除的客户端事件处理程序。这可能是您在JavaScript代码中附加内联函数的内容。这个函数,根据您的需要,可能只是一个AJAX调用(通过jQuery,自然地)到您的设计/选择的服务器端资源,它将处理删除。

根据我过去使用jqGrid的经验,以及到目前为止的评论,听起来第一个选项就是它正在寻找的东西。在初始化的某个地方,jqGrid需要你设置一个它将发送删除的URL。此URL将是您自己设计的服务器端代码。

这意味着您还需要创建服务器端处理程序才能实现此目的。如果您使用的是ASP .NET MVC,这非常简单。控制器操作可以很好地完成工作,如果需要将任何内容发送回客户端,甚至可以非常轻松地返回JSON。如果您使用的是WebForms,则有两个主要选项:

  • 创建一个没有UI的新页面(删除除.aspx文件中的Page指令以外的所有内容)。它将检查传入的参数,在服务器端执行您需要的操作(最有可能从数据库中删除记录),然后手动制作响应。您将需要考虑为此操作响应标头,因为它可能期望内容类型为application-json或类似的东西。
  • 创建一个HttpHandler,它没有.aspx页面的开销(在这方面更像是一个控制器动作)。它会做同样的事情,执行服务器端操作和所有这些,并手动制作响应。 (我假设有一个特定的响应,例如成功或失败的指示,可能是实际服务器错误的形式,如500.)

您的jqGrid初始值设定项会设置一些属性,用于配置用于向服务器发送删除请求的URL。当然,这必须包括要删除的行的ID。从本质上讲,你有一个很多手动控制正在发生的事情。它不是真正的即插即用,你必须编写和理解代码。

编辑:如果你在服务器端进行客户端删除,那么你不需要在这里进行大量的jqGrid。您只需要一个ASP .NET按钮,它会回发到服务器,删除记录,并将页面数据(包括jqGrid数据)重新绑定到服务器的新数据集。请记住,这个后置模型并不是jqGrid的用途。

您可以在客户端为jqGrid删除添加一个按钮,如演示here(单击左侧的“实时数据操作”,然后单击“删除行”以查看示例)。然后你只需为该按钮的click事件编写一个JavaScript函数来处理删除。他们的例子是客户端删除:

$("#dedata").click(function(){
  var gr = jQuery("#delgrid").jqGrid('getGridParam','selrow');
  if( gr != null )
    jQuery("#delgrid").jqGrid('delGridRow',gr,{reloadAfterSubmit:false});
  else
    alert("Please Select Row to delete!");
});

当然,你需要添加(正如我在评论中所说,客户端删除之前的,以防服务器上出现错误)一个AJAX调用来处理我上面谈过的服务器端删除。最直接的方法是使用jQuery .ajax方法。这将调用服务器端资源(控制器操作,HttpHandler或.aspx页面)来处理服务器端删除并返回成功或失败。

请记住,数据库中的服务器端删除与您在此处执行的操作完全不同。它也非常适用于互联网上的ADO .NET和LINQ以及实体框架文章和教程。基本上,你所要做的就是(根据你到目前为止的评论)是从.NET代码调用SQL存储过程。谷歌将就此产生许多结果。