【问题标题】:Send Ajax request from JqGrid ShowLink click从 JqGrid ShowLink 点击发送 Ajax 请求
【发布时间】:2010-08-31 00:23:25
【问题描述】:

当用户点击 jqGrid 中的链接时,我需要加载一些动态 html。

这是我的定义

function loadUserAdministrationList() {
    jQuery("#userlist").jqGrid({
        url: '/Administration/GetData/',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Username', 'Prénom', 'Nom', 'Courriel'],
        colModel: [{ name: 'Username', index: 'Username', width: 300, align: 'left',
                     edittype: 'select', formatter: 'showlink',
                     formatoptions: { baseLinkUrl: '/Administration/ModifyUser'} },
              { name: 'Prénom', index: 'Firstname', width: 300, align: 'left' },
              { name: 'Nom', index: 'Lastname', width: 300, align: 'left' },
              { name: 'Courriel', index: 'Email', width: 300, align: 'left'}],
        pager: jQuery('#userlistpager'),
        rowNum: 20,
        rowList: [5, 10, 20, 50],
        sortname: 'Firstname',
        sortorder: "asc",
        height:600,
        viewrecords: true,
        imgpath: '/Public/css/theme/custom/images',
        caption: '',
        loadtext: 'Chargement des utilisateurs...'
    }).navGrid('#userlistpager',
                { search: true, edit: false, add: false, del: false },
                {}, // default settings for edit
                {}, // default settings for add
                {}, // default settings for delete
                { closeOnEscape: true, multipleSearch: true,
                  closeAfterSearch: true }, //search options
                {}
    );
};

如您所见,我想加载修改表单。 我如何告诉 jqGrid 在单击 showLink 时进行 ajax 调用? 谢谢

【问题讨论】:

    标签: jquery jqgrid jqgrid-asp.net


    【解决方案1】:

    可能的解决方案如下所示:

    1. 在“用户名”中删除不需要的edittype: 'select'align: 'left',并考虑添加title: false,而不是在用鼠标悬停单元格时删除工具提示的显示。
    2. 将包含formatter: 'showlink'formatoptions修改为:formatoptions: { baseLinkUrl: 'javascript:', showAction: "MyBase.GetAndShowUserData(jQuery('#userlist'),'#myDiv','", addParam: "');" }。 jqGrid 将构造<a> 元素的href 属性,如下所示:href="javascript:MyBase.GetAndShowUserData(jQuery('#userlist'),'#userDetails','?id=rowId');" 其中rowId 将是相应网格行的ID。
    3. 添加一个 global 函数(定义在 JavaScript 的顶层),例如名称为 MyBase.GetAndShowUserData,如下所示:

    (在下面的代码中,我们使用全局MyBase 仅用于命名空间)

    var MyBase = {};
    MyBase.GetAndShowUserData = function (grid,tagetDivSelector,param) {
        // param will be in the form '?id=rowId'. We need to get rowId
        var ar = param.split('=');
        if (grid.length > 0 && ar.length === 2 && ar[0] === '?id') {
            var rowid = ar[1];
            var username = grid.getCell(rowid, 'Username');
            var userDetails = jQuery(tagetDivSelector);
            userDetails.empty();
            jQuery.ajax({
                url: '/Administration/ModifyUser',
                data: { userId: rowid, userName: username },
                type: 'GET',
                // optional contentType (depend on your server environment):
                // contentType: 'application/json',
                dataType: 'json',
                success:function(data,st) {
                    var s = "BlaBla";
                    // TODO: construct HTML code based on data received from the server
                    userDetails.html(s);
                },
                error:function(xhr,st,err){
                    alert(st + ": " + data.responseText);
                }
            });
        }
    };
    

    我想在这里,您的页面上有一个<div> 或其他带有id="userDetails" 的元素

    <table id="userlist"></table>
    <div id="pager"></div>
    <div id="userDetails"></div>
    

    函数MyBase.GetAndShowUserData 将进行ajax 调用并将结果填充到&lt;div id="userDetails"&gt;&lt;/div&gt; 中。 MyBase.GetAndShowUserData 中的代码只是一个原始模板。我只想展示如何访问网格中的数据。

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 2020-04-05
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 2019-10-15
      相关资源
      最近更新 更多