Lor*_*nzo 4 jquery jqgrid jqgrid-asp.net
我有3个简单的问题.
我有一些代码告诉我页面中是否存在jqGrid对象:
//Check if there is a jqGrid on the page and if present, reloads its data ;)
var jqGrid = $('div.ui-jqgrid-bdiv table');
if (jqGrid.length) {
//time to reload
$(jqGrid).trigger('reloadGrid');
}
Run Code Online (Sandbox Code Playgroud)
我想找到寻呼机ID元素(如果有的话).有没有办法做到这一点?
假设我的jqGrid表中有一个自定义类:
<table id="myGrid" runat="server" class="customclass"></table>
<div id="myGrid_pager" runat="server"></div>
Run Code Online (Sandbox Code Playgroud)
如何动态检查jqGrid中是否存在customclass?
编辑:
借助Oleg帮助,我能够编写一个reconfigPermissions()显示/隐藏默认添加,编辑和删除按钮的功能.这是功能:
function reconfigPermissions(gridID) {
var enableRegistry = CanModifyRegistry();
var ops = ['#add_' + gridID, '#edit_' + gridID, '#del_' + gridID];
$.each(ops, function (ix, value) {
var $td = $(value);
if (enableRegistry === true) {
$td.show();
} else {
$td.hide();
}
});
}
Run Code Online (Sandbox Code Playgroud)
当用户在页面中其他位置定义的组合框中选择另一个日期范围时,将调用此函数.问题如下:如果在最初加载网格时,用户有权使用默认时间段(在组合框中选择),一切正常.您可以在组合中切换日期范围,按钮会正确显示和消失.不幸的是,如果用户对最初选择的默认时段没有权限(因此首次创建网格{add: false, edit: false, del: false}),甚至切换到用户拥有权限的时段根本不添加按钮.
这是绑定到组合框change事件处理程序的代码
$.ajax({
url: GetBaseWSUrl() + 'MyWebService.asmx/ChangeCurrentPeriod',
type: "post",
dataType: "json",
async: false,
data: JSON.stringify({ periodID: $(this).val() }),
contentType: "application/json; charset=utf-8",
success: function (data) {
//Check if there is a jqGrid on the page and if present, reloads its data
var jqGrids = $('div.ui-jqgrid-bdiv table');
jqGrids.each(function (ix, jqGrid) {
var gridID = $.jgrid.jqID(jqGrid.id)
reconfigPermissions(gridID);
jqGrid.trigger('reloadGrid');
});
}
});
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
Ole*_*leg 12
您可以通过多种方式在页面上找到jqGrids.例如,您可以使用$('table.ui-jqgrid-btable')而不是$('div.ui-jqgrid-bdiv table').此外,你不应该忘记它可以更多地作为页面上的一个jqGrid.我建议您编写代码,以便它可以与页面的许多jqGrids一起使用,即使您当前每页只使用一个jqGrid.
如果你以任何方式找到tablejqGrid 的元素,你可以获得第一个找到的网格的DOM元素jqGrids[0].jqGrid使用DOM的一些扩展器.它添加了额外的属性grid和p.在每个jqGrid方法中,将通过验证该grid属性是否存在来检查网格是否已初始化.该p属性为您提供所有jqGrid参数p.pager.在网格的顶部边缘,另一个在底部(请参阅:您可以创建最多两个寻呼机上格此获取更多信息).所以你需要的代码看起来像
var jqGrids = $('table.ui-jqgrid-btable');
if (jqGrid.length > 0) {
jqGrid.each(function(i) {
if (this.grid) {
// one more test for the jqGrid
// jqGrid[i] is a jqGrid
if (this.p.toppager) {
// this.id + '_toppager' is the id of the top pager
}
if (this.p.pager) {
// this.p.pager is the id of the bottom pager
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
要测试table元素是否具有某个customclass类,可以使用jQuery.hasClass.
更新:在评论中,您问我如何隐藏或动态显示导航栏中的按钮.我准备了演示,演示了这个:

如果检查放置在网格上方的按钮,则导航栏中的相应按钮将被隐藏.取消选中将显示相应的按钮.
代码只是调用$('#add_list').hide()或$('#add_list').show()隐藏/显示"添加"按钮.在示例中,id ="add_list"的最后一部分是<table>用于创建网格的元素的id .其他标准按钮具有IDS启动具有以下前缀:'edit_','view_','del_','search_','refresh_'.如果网格的id具有特殊字符,则更常用的代码如下所示:
var grid = $("#list"),
gid = $.jgrid.jqID(grid[0].id);
$('#cbAdd').change(function () {
var $td = $('#add_' + gid);
if ($(this).is(':checked')) {
$td.hide();
} else {
$td.show();
}
});
Run Code Online (Sandbox Code Playgroud)
要查找navButtonAdd添加的自定义导航器按钮,我使用title属性:
$('#cbChooseColumns').change(function () {
var $td = $(grid[0].p.pager + '_left ' + 'td[title="choose columns"]');
if ($(this).is(':checked')) {
$td.hide();
} else {
$td.show();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16776 次 |
| 最近记录: |