【问题标题】:jqGrid dataUrl not loading when grid is loaded加载网格时未加载jqGrid dataUrl
【发布时间】:2014-12-03 06:57:56
【问题描述】:

我正在使用 inlineNav(由于这里的帮助而成功!)。

现在在 select 语句中使用 dataUrl,我不明白这种行为。

加载网格时不加载选择选项。在按下编辑或添加记录之前,不会发出选择 HTML 请求。

我可以在加载网格后立即加载它吗?

$("#navgrid").jqGrid({
    sortable: true,
    rownumbers: true,
    url: 'cms.dbw?action=ajaxgrid&sessionid=3d70a780-d6ec-102f-bd56-0015171f0bcc&subaction=jq&tableid=carepln',
    editurl: 'cms.dbw',
    datatype: 'json',
    mtype: 'GET',
    pager: '#navgrid_bottompager',
    rowNum: 10,
    rowList: [10,50,100],
    width: 750,
    height: '100%',
    shrinkToFit: false,
    toolbar: [false,'top'],
    sortname: 'id',
    sortorder: 'asc',
    viewrecords: true,
    gridview: true,
    altRows: false,
    toppager: true,
    caption: 'Care Plan Detail',
    colNames: ['ID','Act','Resident Code','Care Code'],
    colModel: [
        {name:'id',index:'id',width:50,align:'center',search:false,key:true,hidden:true},
        {name:'active',width:30,align:'center',editable:true,edittype:'checkbox',editoptions: {value:'Y:N'},formatoptions:{disabled:false,value:"Y:N"}},
        {name:'resid',align:'left',editable:true,width:70},
        {name:'classid',align:'left',editable:true,edittype: 'select',editoptions: { dataUrl: 'cms.dbw?action=ajaxgrid&sessionid=3d70a780-d6ec-102f-bd56-0015171f0bcc&subaction=jqsubtable&tableid=careserv&field1=classid&field2=description'} ,width:70}
    ]
}); 

{"page":1,"records":4024,"total":403,"rows":[{"id":"1","cell":["1","Y"," 100243","22020"]},{"id":"2","cell":["2","Y","100220","22020"]},{"id":"3", "细胞":["3","Y","100193","22020"]},{"id":"4","细胞":["4","Y","100082"," 22020"]},{"id":"5","cell":["5","Y","100068","22020"]},{"id":"6","cell": ["6","Y","100241","22020"]},{"id":"7","cell":["7","Y","100215","22020"]} ,{"id":"8","cell":["8","Y","100059","22020"]},{"id":"9","cell":["9" ,"Y","100240","22020"]},{"id":"10","cell":["10","Y","100009","22020"]}]}

直到编辑开始,dataUrl 才会解析。并且编辑后不显示。

【问题讨论】:

    标签: select jqgrid


    【解决方案1】:

    我认为在编辑开始时加载 dataUrl 没有任何缺点。相反,我认为这种行为是优势。首先,不应加载 optional 数据。最好按需加载数据。第二个优势是您可以从dataUrl 获取当前数据。在开始编辑来自dataUrl 的当前数据时,将被加载。因此,如果数据将在服务器上更改,您可以在每行编辑时使用不同的值。

    如果您需要只加载一次数据,则根本不能使用dataUrl。取而代之的是,您可以针对 setGridParam 进行单独的 Ajax 调用来设置 editoptions.value。

    【讨论】:

    • 我了解您列出的优点,我相信 jqGrid 是一个出色的工具。
    • 我了解您列出的优势,并且我相信 jqGrid 是一款出色的工具。我希望它会像网格本身中的一个真正的选择框一样,并通过 ajax 从服务器中引入选项——它会在我编辑或添加时立即执行。但是,在网格显示时 。
    • @GregNeid:抱歉,你想在inline editing 中使用选择吗?在这种情况下,您可以使用dataUrl。您目前遇到的问题是什么?
    • dataUrl 非常适合编辑,但它不会在编辑之前的行中显示为
    • @GregNeid:可能是误会。如果
    【解决方案2】:

    我有同样的问题 - 我的数据中有一个外键,我希望网格显示该列的一些可理解的值,而不是用户不知道的一些随机键。和你一样,我使用 dataUrl 来获取选项,并希望使用 formatter:'select' 让它显示这些值,即使不编辑行也是如此。问题是这个 ajax 请求只在编辑行时发生,所以在编辑发生之前它不知道值。我发现的唯一解决方案是在设置网格之前对这些值进行一些手动 ajax 加载,并使用这些值设置 editoptions: {value: ... },就像对其他列之一所做的那样。这是网格格式化程序在编辑发生之前知道这些值的唯一方法。

    This answer 提供了在 gird 之前加载选项的示例,但省略了 formatter:'select' 部分 - 这是关于此的文档的 link。

    【讨论】:

    • @ZacharyOlsen:“密码”在编辑之前也无法解析。它会显示密码,直到您编辑它,然后它变成 ************。
    • 这有点令人沮丧 - 我会假设如果它有一个编辑类型,那么它就会有一个格式化程序类型。发现这个讨论扩展它来处理这种情况作为解决方法:trirand.com/blog/?page_id=393/help/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多