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

如何在asp.NETC中删除jqgrid的选定记录#,asp.net,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',

有人能帮我删除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>

var x=屏幕宽度;
$(文档).ready(函数(){
jQuery(“#表1”).jqGrid({
url:'griddata.aspx/DepartmentData?id=1',
数据类型:“json”,
mtype:'获取',
ColName:[“部门”、“部门代码”、“联系人”、“联系电话”、“联系电子邮件”],
colModel:[
{名称:'Department',索引:'Department',宽度:55},
{名称:“部门代码”,索引:“部门代码”,宽度:90},
{name:'Contact Person',index:'Contact Person',宽度:40,对齐:'center'},
{name:'Contact Phone',index:'Contact Phone',宽度:40,对齐:'center'},
{name:'Contact Email',index:'Conatct Email',宽度:40,对齐:'center'}],
寻呼机:“#第1页”,
rowNum:15,
行列表:[10,20,30],
sortname:“部门”,
巫师:“描述”,
有一次:是的,
loadtext:“正在加载…”,
shrinkToFit:是的,
多选:对,
emptyrecords:“没有要查看的记录”,
宽度:x-40,
身高:230,
行数:对,
描述:“部门表”
});
jQuery(#table1”).jqGrid('navGrid','#pager1',{edit:true,add:true,del:true});
});
(可能是时候开始将此对话从注释转移到答案…)

我对jqGrid中的这一特定功能不是100%熟悉(正如我在评论中所说,它自己的文档很难跟上它的发展),但本质上,“删除”功能需要两样东西中的一种:

  • 发送预定删除请求的URL。可能是一个GET请求,查询字符串上有一些参数,但这还不确定。此URL可能是高度可配置的。您需要找到在哪里/如何配置它(除非您可以向我指出您正在使用的文档/教程,或许我可以从中提供帮助)
  • 用于删除的客户端事件处理程序。这可能是在JavaScript代码中附加内联函数的内容。出于您的需要,此函数可能只是对您设计/选择的服务器端资源的AJAX调用(当然是通过jQuery),该资源将处理删除
根据我过去使用jqGrid的经验,以及您迄今为止的评论,第一个选项似乎就是它所寻找的。jqGrid在初始化过程中的某个地方需要您设置一个URL,它将向该URL发送删除。此URL将由您自己为服务器端代码设计

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

  • 创建一个没有UI的新页面(从.aspx文件中删除除page指令之外的所有内容)。它将检查传入的参数,在服务器端执行您需要的操作(很可能从数据库中删除记录),然后手动创建响应。您需要研究如何为此操作响应头,因为它可能希望内容类型是
    application-json
    或类似的类型
  • 创建一个
    HttpHandler
    ,它没有.aspx页面的开销(在这方面更像控制器操作)。它也会做同样的事情,执行服务器端操作以及其他所有操作,并手动创建响应。(我假设预期会有一个特定的响应,例如成功或失败的指示,其形式可能是实际的服务器错误,例如500。)
jqGrid初始值设定项将设置一些属性,用于配置用于向服务器发送删除请求的URL。当然,这必须包括被删除行的ID。基本上,你有很多手动控制的事情发生。它不是真正的即插即用,您必须编写并理解代码

编辑:如果您在服务器端执行客户端删除,则不需要jqGrid的大量参与。您只需要有一个ASP.NET按钮,它可以发回服务器,删除记录,并将页面数据(包括jqGrid数据)重新绑定到服务器的新数据集。请记住,这个后置模型并不是jqGrid真正想要使用的

您可以在客户端添加一个用于jqGrid删除的按钮,如图所示(单击左侧的“实时数据操作”,然后单击“删除行”以查看示例)。然后,您只需为该按钮的单击事件编写一个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调用来处理服务器端删除(正如我在评论中所说的,在客户端删除之前,以防服务器上出现错误),正如我前面所说的。最直接的方法是使用该方法。这将调用服务器端资源(控制器操作、HttpHandler或.aspx页),处理服务器端删除并返回成功或失败

请记住,服务器端从数据库中删除是一个完全独立的主题,而不是您在这里所做的。互联网上的ADO.NET和LINQ以及实体框架文章和教程也很好地介绍了这一点。基本上,你想做的就是(根据你目前的评论)我