jqGrid与Struts2的结合应用(四) —— 丰富多彩的Pager Bar

jquery.pager.js分页实现详解 本文实例为大家分享了jquery.pager.js分页实现代码,供大家参考,具体内容如下 jquery.pager.js: /* * jQuery pager plugin * Version 1.0 (12/22/2008) * @requires jQuery v1.2.6 or later * * Example at: http://jonpauldavies.github.com/JQuery/Pager/PagerDemo.html * * Copyright (c) 2008-2009 Jon Paul Davies * Dual licensed under the MIT 立即下载

原文地址:http://blog.youkuaiyun.com/gengv/article/details/5720707

如不能转载,请联系博主,我马上删除。

在介绍排序与查询之前,先介绍一下Pager、Navigator和自定义按钮。

默认情况下,Pager Bar分为3个部分:

  • 页码栏区域(Pager)
  • 导航按钮区域(Navigator Buttons)
  • 记录信息区域(Record Information)



1. Pager和Record Information的常用属性

 

在jqGrid的options选项中,有许多是专门针对Pager的,之前的例子中已经使用了一个——“pager”选项,用来指明Pager Bar在页面中对应的区域。

主要的属性有:

  • pager :必须是一个有效的html元素。这个元素可以根据页面的需要,被放置于页面的任何位置。在指定pager选项的值的时候,可以使用三种形式:'pager'、'#pager'、$('#pager')。但推荐使用第二种,即'#pager'。
  • pgbuttons :决定在Pager Bar里是否显示用于翻页的按键,默认为true。
  • pginput :决定在Pager Bar里是否显示用于输入目标页码的输入框,默认为true。
  • pgtext :显示当前页码状态的字符串,这个与所选用的language文件有关,具体的文本格式定义在里面。例如默认的英文格式就是“Page {0} of {1}”,其中{0}代表当前载入的页码;{1}代表页码的总数。
  • pagerpos :用于定义页码栏在Pager Bar中的位置,默认情况下为center,还可以是left或right。
  • rowNum :定义一次性显示多少条记录,默认值为20;这个选项在第一篇文章中已经介绍过了。
  • rowList :定义rowNum可供选择的值的数组,默认值为空数组;这个选项在第一篇文章中也已经介绍过了。
  • lastpage :只读属性,返回页码总数,也即从response中解析出来的那个对应着“total”项的值(参见第一篇文章jsonReader部分)。
  • viewrecords :定义是否在Pager Bar中显示记录数信息。
  • recordpos :用于定义记录信息在Pager Bar中的显示位置,默认为right,还可以是left或center。
  • records :只读属性,返回记录总数,也即从response中解析出来的那个对应着“record”项的值(参见第一篇文章jsonReader部分)。
  • recordtext :记录信息显示时所使用的文本格式,只有当viewrecords为true,且记录总数大于0的时候才会显示。其格式与所选用的language文件有关,具体的文本格式定义在里面。例如默认的英文格式就是“View {0} - {1} of {2}”,其中{0}代表当前页第一条记录在整个记录总数中的位置;{1}代表当前页最后一条记录在整个记录总数中的位置;{2}代表所有记录的总数。


注1:这些属性(选项),并不都是可以用jqGrid的setGridParam方法在初始化之后改变值的。比如pgtext、recordtext、rowNum就是可以修改的,而其余的都是不能修改的,也即只能使用默认值,或者在jqGrid初始化的时候就定义好了。
注2:在jqGrid创建并初始化之后,修改这些关于Pager的属性,都必须执行trigger("reloadGrid")才能生效。
注3:在第一篇文章中我曾写到,经过测试jqGrid的caption似乎也不能用setGridParam方法改变并生效。我再次查了一下文档,发现这个选项也明确标注着也是不能改变,除非使用相应的setCaption方法。

 

 

 

2. Navigator

 

默认有6个预定义好的按钮:

  • 添加新行
  • 编辑选中的行
  • 查看选中的行
  • 删除选中的行
  • 查找记录
  • 重载表格

Navigator通过navGrid方法来配置导航栏,用法是:

$("#grid_id").navGrid('#gridpager',{parameters},prmEdit, prmAdd, prmDel, prmSearch, prmView);

或

$("#grid_id").jqGrid('navGrid','#gridpager',{parameters},prmEdit, prmAdd, prmDel, prmSearch, prmView);

 

关于各种参数的具体说明,请参考官方文档(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator )

 

 

 

2.1 关于Navigator的参数

  • add :定义是否启用添加操作的按钮;
  • addicon :用于添加操作的按钮上的图标,目前只能使用jQuery UI中的图标样式;
  • addtext :用于添加操作的按钮上的文本;
  • addtitle :用于添加操作的按钮上的tooltip;
  • del/delicon/deltext/deltitle :用于删除按钮的一套属性,可以参照添加按钮的几个属性;
  • edit/editicon/edittext/edittitle:用于编辑按钮的一套属性,可以参照添加按钮的几个属性;
  • refresh/refreshicon/refreshtext/refreshtitle:用于刷新表格按钮的一套属性,可以参照添加按钮的几个属性;当点击这个按钮时,将执行trigger("reloadGrid")并清除用于查询的参数;
  • refreshstate :定义如何重新载入Grid表格,firstpage:重新载入表格的第一页;current:重新载入当前页,并保存当前选中的行;默认为firstpage;
  • afterRefresh :定义点击刷新表格按钮之后的事件函数;
  • beforeRefresh :定义点击刷新表格按钮之前的事件函数;
  • search/searchicon/searchtext/searchtitle:用于查询按钮的一套属性,可以参照添加按钮的几个属性;当点击这个按钮时,将会调用searchGrid方法;
  • view/viewicon/viewtext/viewtitle:用于查看记录按钮的一套属性,可以参照添加按钮的几个属性;
  • addfunc :如果定义,则用定义的函数替代原有的add函数,这个函数将不接受任何参数;
  • editfunc :如果定义,则用定义的函数替代原有的edit函数,编辑的行的id作为参数传入这个函数;
  • delfunc :如果定义,则用定义的函数替代原有的del函数,编辑的行的id作为参数传入这个函数;
  • alertcap :当未选中任何行而点击编辑、删除、查看按钮时,弹出的提示框的标题;
  • alerttext :当未选中任何行而点击编辑、删除、查看按钮时,弹出的提示信息;
  • cloneToTop :定义是否“拷贝”一套导航按钮到Grid表格顶端的Pager中,默认为false;

借助这些选项,可以将上一篇中的例子,修改一下,更多的借助jqGrid内置的功能。例如,当载入行数据到对话框时,之前是通过在自定义的loadSelectedRowData方法中,调用jqGrid("getGridParam", "selrow")来检查是否有选中的数据行。现在在点击编辑或删除按钮的时候,可以通过jqGrid自己检查是否有选中的数据行,如果没有则弹出提示。如果有则选中的行,则还会将行id作为参数,传入对应的函数方法中。

 

将代码修改如下:

$(function(){  
    ...  
      
    $("#gridTable").jqGrid("navGrid", "#gridPager", {  
        addfunc : openDialog4Adding,    // (1) 点击添加按钮,则调用openDialog4Adding方法  
        editfunc : openDialog4Updating, // (2) 点击编辑按钮,则调用openDialog4Updating方法  
        delfunc : openDialog4Deleting,  // (3) 点击删除按钮,则调用openDialog4Deleting方法  
        alerttext : "请选择需要操作的数据行!"  // (4) 当未选中任何行而点击编辑、删除、查看按钮时,弹出的提示信息  
    });  
      
    ...  
});  
var openDialog4Adding = function() {  
    var consoleDlg = $("#consoleDlg");  
    var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");  
    consoleDlg.find("input").removeAttr("disabled").val("");  
    dialogButtonPanel.find("button:not(:contains('取消'))").hide();  
    dialogButtonPanel.find("button:contains('创建')").show();  
    consoleDlg.dialog("option", "title", "创建新联系人").dialog("open");  
};  
var openDialog4Updating = function(rowid) { // (6) 接受选中行的id为参数  
    var consoleDlg = $("#consoleDlg");  
    var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");  
      
    consoleDlg.find("input").removeAttr("disabled");  
    dialogButtonPanel.find("button:not(:contains('取消'))").hide();  
    dialogButtonPanel.find("button:contains('保存')").show();  
    consoleDlg.dialog("option", "title", "修改联系人信息");  
      
    loadSelectedRowData(rowid); // (7) 将选中行id传入loadSelectedRowData方法  
};  
var openDialog4Deleting = function(rowid) { // (8) 接受选中行的id为参数  
    var consoleDlg = $("#consoleDlg");  
    var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");  
      
    consoleDlg.find("input").attr("disabled", true);  
    dialogButtonPanel.find("button:not(:contains('取消'))").hide();  
    dialogButtonPanel.find("button:contains('删除')").show();  
    consoleDlg.dialog("option", "title", "删除联系人");  
      
    loadSelectedRowData(rowid);  
};  
var loadSelectedRowData = function(selectedRowId) { // (9) 接受选中行的id为参数  
          
    var params = {  
        "contact.id" : selectedRowId  
    };  
    var actionUrl = "viewContact.action";  
    // 从Server读取对应ID的JSON数据   
    $.ajax( {  
        url : actionUrl,  
        data : params,  
        dataType : "json",  
        cache : false,  
        error : function(textStatus, errorThrown) {  
            alert("系统ajax交互错误: " + textStatus);  
        },  
        success : function(data, textStatus) {  
            // 如果读取结果成功,则将信息载入到对话框中                   
            var rowData = data.contact;  
            var consoleDlg = $("#consoleDlg");  
            consoleDlg.find("#selectId").val(rowData.id);  
            consoleDlg.find("#lastName").val(rowData.lastName);  
            consoleDlg.find("#firstName").val(rowData.firstName);  
            consoleDlg.find("#certificateNo").val(rowData.certificateNo);  
            consoleDlg.find("#email").val(rowData.email);  
            consoleDlg.find("#telNo").val(rowData.telNo);  
            consoleDlg.find("#address").val(rowData.address);  
            consoleDlg.find("#idCardNo").val(rowData.idCardNo);  
            consoleDlg.find("#nationality").val(rowData.nationality);  
              
            // 根据新载入的数据将表格中的对应数据行一并刷新一下   
            var dataRow = {  
                    id : rowData.id,  
                    lastName : rowData.lastName,  
                    firstName : rowData.firstName,  
                    email : rowData.email,  
                    telNo : rowData.telNo  
                };  
              
            $("#gridTable").jqGrid("setRowData", data.contact.id, dataRow);  
                  
            // 打开对话框   
            consoleDlg.dialog("open");  
        }  
    });  
};


说明:(2)(3)处意味着,当点击编辑或删除按钮时,如果有数据行被选中,则将行id作为参数传入对应的openDialog4Updating和openDialog4Deleting方法中;如果没有选中的行,则将弹出窗口,提示信息。


 

 

2.2 关于prmEdit、prmAdd、prmDel、prmSearch、prmView的参数

jqGrid本身为这些参数定义了默认值,而且不同的language文件也有各自的定义来覆盖原始的默认值。我们也可以在jqGrid重新定义新的值,以覆盖默认的值。

例如:

$("#gridTable").jqGrid("navGrid", "#gridPager",   
    {  
        addfunc : openDialog4Adding,  
        editfunc : openDialog4Updating,  
        delfunc : openDialog4Deleting,  
        alerttext : "请选择需要操作的数据行!"  
    },  
    {}, // prmEdit   
    {}, // prmAdd   
    {}, // prmDel   
    {       // prmSearch   
        caption: "查找",  
        Find: "Let's go!",  
        multipleSearch : true  
    },  
    {}  // prmView   
); 


具体的参数如下,也可参考官方文档(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator )


$.jgrid = {  
...  
   search : {  
     caption: "Search...",  
     Find: "Find",  
     Reset: "Reset",  
     odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain'],  
     groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ],  
     matchText: " match",  
     rulesText: " rules"  
   },  
   edit : {  
     addCaption: "Add Record",  
     editCaption: "Edit Record",  
     bSubmit: "Submit",  
     bCancel: "Cancel",  
     bClose: "Close",  
     saveData: "Data has been changed! Save changes?",  
     bYes : "Yes",  
     bNo : "No",  
     bExit : "Cancel",  
  },  
  view : {  
    caption: "View Record",  
    bClose: "Close"  
  },  
  del : {  
    caption: "Delete",  
    msg: "Delete selected record(s)?",  
    bSubmit: "Delete",  
    bCancel: "Cancel"  
  },  
  nav : {  
    edittext: "",  
    edittitle: "Edit selected row",  
    addtext:"",  
    addtitle: "Add new row",  
    deltext: "",  
    deltitle: "Delete selected row",  
    searchtext: "",  
    searchtitle: "Find records",  
    refreshtext: "",  
    refreshtitle: "Reload Grid",  
    alertcap: "Warning",  
    alerttext: "Please, select row",  
    viewtext: "",  
    viewtitle: "View selected row"  
  },  
...  




 

 

 

3. 自定义按钮

jqGrid还允许将自定义的按钮加入Page Bar,具体API是:

$("#grid_id").navGrid("#pager",...).navButtonAdd("#pager",{parameters});

或者

$("#grid_id").jqGrid('navGrid',"#pager",...).jqGrid('navButtonAdd',"#pager",{parameters});

 

关于navButtonAdd的属性:

  • caption :按钮上的文本,可以是空值;
  • buttonicon :按钮上的图标,如果设为“none”,则只显示按钮上的文本;
  • onClickButton :当点击按钮时所调用的方法函数,默认为null;
  • position :添加新按钮的位置,first或last;默认为last;
  • title :新按钮的tooltip
  • cursor :当鼠标滑过按钮时的光标样式,默认为pointer;
  • id :为按钮设置id。

 

 

4. 自定义分隔符

$("#grid_id").navSeparatorAdd('#pager',{separator_parameters});

相关属性:

  • sepclass :分隔符的CSS样式;
  • sepcontent :分隔符中的内容;

附:相关代码


javascript部分:

$(function(){  
    // 配置jqGrid组件   
    $("#gridTable").jqGrid({  
        url: "jqGrid03.action",  
        datatype: "json",  
        mtype: "GET",  
        height: 350,  
        width: 600,  
        colModel: [  
              {name:"id",index:"id",label:"编码",width:40},    
              {name:"lastName",index:"lastName",label:"姓",width:80,sortable:false},  
              {name:"firstName",index:"firstName",label:"名",width:80,sortable:false},  
              {name:"email",index:"email",label:"电子邮箱",width:160,sortable:false},  
              {name:"telNo",index:"telNo",label:"电话",width:120,sortable:false}  
        ],  
        viewrecords: true,  
        rowNum: 15,  
        rowList: [15,50,100],  
        prmNames: {search: "search"},  
        jsonReader: {  
            root:"gridModel",  
            records: "record",  
            repeatitems : false  
        },  
        pager: "#gridPager",  
        caption: "联系人列表",  
        hidegrid: false,  
        shrikToFit: true  
    });  
      
    var alertText = "<div style="margin:0.3em; background:#FFFFFF; border:1px solid #A6C9E2; padding: 0.5em;" mce_style="margin:0.3em; background:#FFFFFF; border:1px solid #A6C9E2; padding: 0.5em;">请选择需要操作的数据行!</div>";  
      
    $("#gridTable").jqGrid("navGrid", "#gridPager", {  
        addfunc : openDialog4Adding,    // (1) 点击添加按钮,则调用openDialog4Adding方法  
        editfunc : openDialog4Updating, // (2) 点击添加按钮,则调用openDialog4Updating方法  
        delfunc : openDialog4Deleting,  // (3) 点击添加按钮,则调用openDialog4Deleting方法  
        alerttext : alertText   // (4) 当未选中任何行而点击编辑、删除、查看按钮时,弹出的提示信息  
    },{},{},{},{    // (5) 修改于查询相关的prmSearch参数   
        caption: "查找",  
        Find: "Let's go!",  
        multipleSearch: true,  
        groupOps: [{ op: "AND", text: "全部" }],  
    },{});  
      
    // 配置对话框   
    $("#consoleDlg").dialog({  
        autoOpen: false,      
        modal: true,    // 设置对话框为模态(modal)对话框  
        resizable: true,      
        width: 480,  
        buttons: {  // 为对话框添加按钮   
            "取消": function() {$("#consoleDlg").dialog("close")},  
            "创建": addContact,  
            "保存": updateContact,  
            "删除": deleteContact  
        }  
    });  
});  
var openDialog4Adding = function() {  
    var consoleDlg = $("#consoleDlg");  
    var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");  
    consoleDlg.find("input").removeAttr("disabled").val("");  
    dialogButtonPanel.find("button:not(:contains('取消'))").hide();  
    dialogButtonPanel.find("button:contains('创建')").show();  
    consoleDlg.dialog("option", "title", "创建新联系人").dialog("open");  
};  
var openDialog4Updating = function(rowid) { // (6) 接受选中行的id为参数  
    var consoleDlg = $("#consoleDlg");  
    var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");  
      
    consoleDlg.find("input").removeAttr("disabled");  
    dialogButtonPanel.find("button:not(:contains('取消'))").hide();  
    dialogButtonPanel.find("button:contains('保存')").show();  
    consoleDlg.dialog("option", "title", "修改联系人信息");  
      
    loadSelectedRowData(rowid); // (7) 将选中行id传入loadSelectedRowData方法  
}  
var openDialog4Deleting = function(rowid) { // (8) 接受选中行的id为参数  
    var consoleDlg = $("#consoleDlg");  
    var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");  
      
    consoleDlg.find("input").attr("disabled", true);  
    dialogButtonPanel.find("button:not(:contains('取消'))").hide();  
    dialogButtonPanel.find("button:contains('删除')").show();  
    consoleDlg.dialog("option", "title", "删除联系人");  
      
    loadSelectedRowData(rowid);  
}  
var loadSelectedRowData = function(selectedRowId) { // (9) 接受选中行的id为参数  
    var params = {  
        "contact.id" : selectedRowId  
    };  
    var actionUrl = "viewContact.action";  
    // 从Server读取对应ID的JSON数据   
    $.ajax( {  
        url : actionUrl,  
        data : params,  
        dataType : "json",  
        cache : false,  
        error : function(textStatus, errorThrown) {  
            alert("系统ajax交互错误: " + textStatus);  
        },  
        success : function(data, textStatus) {  
            // 如果读取结果成功,则将信息载入到对话框中                    
            var rowData = data.contact;  
            var consoleDlg = $("#consoleDlg");  
            consoleDlg.find("#selectId").val(rowData.id);  
            consoleDlg.find("#lastName").val(rowData.lastName);  
            consoleDlg.find("#firstName").val(rowData.firstName);  
            consoleDlg.find("#certificateNo").val(rowData.certificateNo);  
            consoleDlg.find("#email").val(rowData.email);  
            consoleDlg.find("#telNo").val(rowData.telNo);  
            consoleDlg.find("#address").val(rowData.address);  
            consoleDlg.find("#idCardNo").val(rowData.idCardNo);  
            consoleDlg.find("#nationality").val(rowData.nationality);  
              
            // 根据新载入的数据将表格中的对应数据行一并刷新一下   
            var dataRow = {  
                    id : rowData.id,  
                    lastName : rowData.lastName,  
                    firstName : rowData.firstName,  
                    email : rowData.email,  
                    telNo : rowData.telNo  
                };  
              
            $("#gridTable").jqGrid("setRowData", data.contact.id, dataRow);  
                  
            // 打开对话框   
            consoleDlg.dialog("open");  
        }  
    });  
};  
var addContact = function() {  
    var consoleDlg = $("#consoleDlg");  
          
    var pLastName = $.trim(consoleDlg.find("#lastName").val());  
    var pFirstName = $.trim(consoleDlg.find("#firstName").val());  
    var pEmail = $.trim(consoleDlg.find("#email").val());  
    var pTelNo = $.trim(consoleDlg.find("#telNo").val());  
    var pAddress = $.trim(consoleDlg.find("#address").val());  
    var pIdCardNo = $.trim(consoleDlg.find("#idCardNo").val());  
    var pNationality = $.trim(consoleDlg.find("#nationality").val());  
      
    var params = {  
        "contact.lastName" : pLastName,  
        "contact.firstName" : pFirstName,  
        "contact.email" : pEmail,  
        "contact.telNo" : pTelNo,  
        "contact.address" : pAddress,  
        "contact.idCardNo" : pIdCardNo,  
        "contact.nationality" : pNationality  
    };  
      
    var actionUrl = "createContact.action"  
      
    $.ajax( {  
        url : actionUrl,  
        data : params,  
        dataType : "json",  
        cache : false,  
        error : function(textStatus, errorThrown) {  
            alert("系统ajax交互错误: " + textStatus);  
        },  
        success : function(data, textStatus) {  
            if(data.ajaxResult == "success") {  
                var dataRow = {  
                    id : data.contact.id,   // 从Server端得到系统分配的id  
                    lastName : pLastName,  
                    firstName : pFirstName,  
                    email : pEmail,  
                    telNo : pTelNo  
                };  
                  
                var srcrowid = $("#gridTable").jqGrid("getGridParam", "selrow");  
                  
                if(srcrowid) {  
                    $("#gridTable").jqGrid("addRowData", data.contact.id, dataRow, "before", srcrowid);  
                } else {  
                    $("#gridTable").jqGrid("addRowData", data.contact.id, dataRow, "first");  
                }  
                consoleDlg.dialog("close");  
                  
                alert("联系人添加操作成功!");  
                  
            } else {  
                alert("添加操作失败!");  
            }  
        }  
    });  
};  
var updateContact = function() {  
    var consoleDlg = $("#consoleDlg");  
      
    var pId = $.trim(consoleDlg.find("#selectId").val());  
    var pLastName = $.trim(consoleDlg.find("#lastName").val());  
    var pFirstName = $.trim(consoleDlg.find("#firstName").val());  
    var pEmail = $.trim(consoleDlg.find("#email").val());  
    var pTelNo = $.trim(consoleDlg.find("#telNo").val());  
    var pAddress = $.trim(consoleDlg.find("#address").val());  
    var pIdCardNo = $.trim(consoleDlg.find("#idCardNo").val());  
    var pNationality = $.trim(consoleDlg.find("#nationality").val());  
    var params = {  
        "contact.id" : pId,  
        "contact.lastName" : pLastName,  
        "contact.firstName" : pFirstName,  
        "contact.email" : pEmail,  
        "contact.telNo" : pTelNo,  
        "contact.address" : pAddress,  
        "contact.idCardNo" : pIdCardNo,  
        "contact.nationality" : pNationality  
    };  
    var actionUrl = "updateContact.action";  
    $.ajax( {  
        url : actionUrl,  
        data : params,  
        dataType : "json",  
        cache : false,  
        error : function(textStatus, errorThrown) {  
            alert("系统ajax交互错误: " + textStatus);  
        },  
        success : function(data, textStatus) {  
            if (data.ajaxResult == "success") {  
                var dataRow = {  
                    id : data.contact.id,  
                    lastName : pLastName,  
                    firstName : pFirstName,  
                    email : pEmail,  
                    telNo : pTelNo  
                };  
                $("#gridTable").jqGrid("setRowData", data.contact.id, dataRow, {color:"#FF0000"});  
                  
                alert("联系人信息更新成功!");  
                  
                consoleDlg.dialog("close");  
                  
            } else {  
                alert("修改操作失败!");  
            }  
        }  
    });  
};  
var deleteContact = function() {  
    var consoleDlg = $("#consoleDlg");  
      
    var pId = $.trim(consoleDlg.find("#selectId").val());  
    var params = {  
        "contact.id" : pId  
    };  
    var actionUrl = "deleteContact.action";  
    $.ajax({  
        url : actionUrl,  
        data : params,  
        dataType : "json",  
        cache : false,  
        error : function(textStatus, errorThrown) {  
            alert("系统ajax交互错误: " + textStatus);  
        },  
        success : function(data, textStatus) {  
            if (data.ajaxResult == "success") {  
                $("#gridTable").jqGrid("delRowData", pId);  
                  
                consoleDlg.dialog("close");  
                alert("联系人删除成功!");  
            } else {  
                alert("删除操作失败!");  
            }  
        }  
    });  
};  



基于STM32的Keil5代码自动补全设置操作指南 掌握Keil5代码自动补全设置技巧,提升STM32开发效率。通过合理配置编辑器选项,实现智能提示与语法补全,让嵌入式编程更流畅,尤其适合使用keil5代码自动补全设置的开发者快速上手。 阅读详情

相关推荐

3.1 计算机视觉的发展和卷积神经网络概要(百度架构师手把手带你零基础实践深度学习原版笔记系列)

3.1 计算机视觉的发展和卷积神经网络(百度架构师手把手带你零基础实践深度学习原版笔记系列) 概要 计算机视觉作为一门让机器学会如何去“看”的科学学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫做机器视觉,其目的是建立能够从图像或者视频中“感知”信息的人工系统。 计算机视觉技术经过几十年的发展,已经在交通(车牌识别、道路违章抓拍)、安防(人脸闸机.

aiAI 691

php grid 分页,jqGrid分页pager配置

导航栏,也可以叫分页组件,html代码里面在后放置一个标签。注意是,不是,然后将通过jqGrid的pager配置指向div的id,这样div就会成为jqGrid分页内容的容器。DEMO.........jQuery("#grid_id").jqGrid({...pager : '#gridpager',...});不需要给分页组件添加样式,也不需要给table标签添加样式。pager配置值可以设置...

weixin_42386504的博客 1040

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 810

使用jqGrid实现分页的步骤

一、前端页面代码中引入jqGrid分页插件所需的源文件 https://github.com/tonytomov/jqGrid/tags <link href="plugins/jqgrid-5.5.2/ui.jqgrid-bootstrap4.css" rel="stylesheet"/> <!-- jqGrid依赖jQuery,因此需要先引入jquery.min.js文件,下方地址为字节跳动提供的cdn地址 --> <script src="https://s3.ps

Tingnichui的博客 4087

Diffusion Models扩散模型与深度学习(数学原理和代码解读)

​ 此前GANs霸占各大顶会很多年,DDPM的出现让人耳目一新!经过这两年的发展,Diffusion Models能在图像生成、超分辨率重建、点云生成、语音生成等领域达到SOTA。这篇文章旨在帮助没有了解过的读者入门,《Diffusion Models与深度学习专栏》已经写了将近三十篇文章,既有原理公式和必备基础知识的讲解,也有代码详细实战解读,还有前沿热门应用,欢迎读者订阅。

沉迷单车的追风少年 4万+

X书关键词协议搜索

【代码】X书关键词协议搜索。

Codeooo 博客 6377

Jqgrid入门-别具特色的Pager Bar (四)

Pager Bar位于表格最下边。默认情况下,分为三部分。如图: 第一部分:导航按钮栏(Navigator) 第二部分:页码栏(Pager) 第三部分:记录信息栏(Record) 要实现这个功能也不难,最基本的语法就一句。 1 $("#gridTable").jqGrid('navGrid',...

aichuxia4449的博客 294

无人机:DJI Matrice 200 Series_(13).行业应用案例分析

在前一节中,我们介绍了DJI Matrice 200系列无人机的基本硬件配置和性能参数。本节将通过具体的行业应用案例,分析如何利用DJI Matrice 200系列无人机进行二次开发,以满足不同行业的需求。

zhubeibei168的博客 1448

【转】jqGrid与Struts2的结合应用(四) —— 丰富多彩的Pager Bar

转至: http://blog.youkuaiyun.com/gengv/article/details/5720707作者:gengv在介绍排序与查询之前,先介绍一下Pager、Navigator和自定义按钮。默认情况下,Pager Bar分为3个部分:页码栏区域(Pager)导航按钮区域(Navigator Buttons)记录信息区域(Record Information)     1. Pa...

sobigring的博客 170

在WSL2中配置代理(Windows)

通过按照上述步骤在WSL2中配置代理,我们可以轻松地在Windows子系统Linux中使用代理服务器访问互联网。请确保提供正确的代理服务器地址和端口号,并根据实际情况进行修改。在WSL2中使用代理是一个常见的需求,它允许我们在Windows子系统Linux中通过代理服务器访问互联网。本文将详细介绍如何在WSL2中配置代理,并提供相应的源代码示例。如果返回的IP地址与代理服务器所在地不同,说明代理正常工作。希望本文能对你有所帮助!如有其他问题,请随时向我提问。替换为实际的代理服务器地址和端口号。

FcUnity的博客 4355

v86.01 鸿蒙内核源码分析 (静态分配篇) | 很简单的一位小朋友 | 百篇博客分析 OpenHarmony 源码

相比动态分配,静态内存池的分配就是个小弟弟,非常的简单,两个结构体 + 一张图 就能说明白。

日拱一卒,力出一孔 774

jqGrid与Struts2的结合应用(四) ------ 丰富多彩的Pager Bar .

在介绍排序与查询之前,先介绍一下Pager、Navigator和自定义按钮。 默认情况下,Pager Bar分为3个部分: 页码栏区域(Pager)导航按钮区域(Navigator Buttons)记录信息区域(Record Information) 1. Pager和Record Information的常用属性   在jqGrid的options选项中,有许

nusoftyu的专栏 639

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JqGrid 使用方法详解 二

JqGrid 使用方法详解 二 Jqgrid学习 -------翻页 Jqgrid学习 -------自定义按钮 Jqgrid学习 -------格式化

weixin_71588037的博客 791

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jqgrid自定义分页UI方法扩展

jqgrid自带分页比较丑,添加一个扩展方法进行分页ui自定义。提示:比原来默认的好看了些。

qq_20941503的博客 548

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jqGrid分页

jqGrid分页首先要在页面设置一个DIV的层。例如,在第一章就提到的 同时,要在jqGrid的配置中加入 jQuery("#grid_id").jqGrid({ ... pager : '#pager', ... }); 参照第二章 效果如下 分页实例 同时,这jqGrid中,在分页可以设定各种属性,例如没有找到数据时显

yayachengyafang的专栏 1014

jquery-pager的基本使用及与ajax结合使用实战演示

很多前端工程师都做过分页显示,如果不使用插件,往往需要手写动态生成的页码以及对页码进行操作的js。而做分页的时候我们一般都会使用ajax请求数据生成页码。如果这样写下来,可能需要写很长的代码,并且发费大量时间,可能还有莫名其妙的bug。所以,jquery.pager.js就为我们解决了这一问题,我们只需要简单的几句代码,就能实现完美的分页显示了。参考网址:https://github.com/jon

少吃点肉的博客 8827

JqGrid学习总结_11 navButtonAdd

1、navButtonAdd官网:   http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_buttons 2、navButtonAdd属性    caption: (string) the caption of the button, can be a empty string.    buttonicon: (string) i

luguling200802544的专栏 3026

jqgrid--分页

jqGrid的翻页要定义在html里,通常是在grid的下面,且是一个div对象:     写道 jQuery("#grid_id").jqGrid({ ... pager : '#gridpager', ... });     不必给翻页设置任何的css属性。在jqGrid里定义的翻页可以是::pager : '#gridpager', pager : 'gridp

jonathan的专栏 1万+

71 jQuery-使用navigator对象获取浏览器信息

1.效果图 2.html代码 &amp;amp;lt;!DOCTYPE html&amp;amp;gt; &amp;amp;lt;html&amp;amp;gt; &amp;amp;lt;head&amp;amp;gt; &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt; &amp;amp;lt;title&amp;amp;gt;71 使

LiGuogang 821

Jqgrid学习(一)---基本介绍以及使用

最近再做项目的时候,遇到了一个新的知识点jqgrid表个控件,它再基于jquery的基础之上对页面的表单进行操作,而页面上仅仅只需要table标签,和与之匹配的命名即可; 下面我们来看一下,它的一些基本的概念: jqGrid皮肤 从3.5版本开始,jqGrid完全支持jquery UI的theme。我们可以从http://jqueryui.com/themeroller/下载我们所需要的th...

qq_42112846的博客 1万+
上一篇: jqGrid与Struts2的结合应用(三) —— 使用自定义表单对话框编辑Grid数据
下一篇: jqGrid与Struts2的结合应用(五) —— 结合Action类进行数据查询
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值