如何填充jqGrid过滤器工具栏并在页面加载时搜索(ASP.net webforms)

时间:2015-08-19 17:30:30

标签: javascript jquery asp.net jqgrid

目前,我尝试使用从Cookie中获取的值来填充filterToolbar。如果过滤器有cookie数据,我希望它填充相应的文本框并过滤jqGrid以获取该数据。

我使用ASP.net webforms,因此我的大多数数据都已初始化。如何/在哪里可以添加javascript以实现此目的?

1 个答案:

答案 0 :(得分:0)

我实际上弄明白了我在做什么。

所以我最终做的解决方案是在document.ready function

中添加一个超时功能
$(document).ready(function () {

    // some code

    setTimeout(function () {
        $('#Jqgrid1')[0].triggerToolbar();
    }, 500)

    //some code
}

我的猜测是我无法使用$('#grid')[0] .toggleToolbar()强制它,因为无论何时我尝试使用它,它都是在整个之前网格设置完毕。

在ASP webform中,我注册了几个函数。

<cc1:JQGrid ID="Jqgrid1" runat="server"
        Height="630"
        SearchDialogSettings-Draggable="true"
        EnableViewState="false"
        AutoWidth="True" >

        <ClientSideEvents 
            LoadComplete="Jqgrid1_LoadComplete"
            GridInitialized="initGrid"
            />
 <%-- grid code --%>
 </cc1:JQGrid>

加载网格后执行LoadComplete。我尝试在那里触发我的工具栏,但没有工作。我的猜测是,在网格执行中使用triggerToolbar()函数还为时过早。

同样适用于GridInitialized事件(尽管这两个事件似乎都暗示着网格完成了它的事情......但无论如何......)

我读取cookie的方式实际上是在GridInitialized事件处理程序中。

function initGrid() {
var myJqGrid = $(this);
var valueName = 'GridFilters';
var myCookie = document.cookie;
var gridFilterString;
var gridFilterArray;
var currentFilter;
var myCookie_arr;
var myDic = {};
if (myCookie.indexOf(valueName) > -1) { // don't even bother if the cookie isn't there...
    myCookie_arr = myCookie.split("; ");     // looking for the cookie I need
    // read cookies into an array
    for (var i = 0; i < myCookie_arr.length; i++)   
    {
        parts = myCookie_arr[i].split("=");
        first = parts.shift();  // remove cookie name
        myDic[first.trim()] = parts.join("=").trim();   // handles multiple equality expressions in one cookie
    }

    if (myDic.hasOwnProperty("GridFilters"))


        gridFilterString = myDic["GridFilters"];

    if (gridFilterString != "NONE") {
        myFiltersDic = {}
        myFiltersArr = gridFilterString.split("&")
        for (var i = 0; i < myFiltersArr.length; i++) {
            parts = myFiltersArr[i].split("=");
            myFiltersDic[parts[0].trim()] = parts[1].trim();
        }
        myParams = $(this).jqGrid("getGridParam", "postData");

        var filters = []

        for (keys in myFiltersDic) {

            $('#gs_' + keys.trim()).val(myFiltersDic[keys].trim());
        }
        $.cookie('m_blnSearchIsHidden', "0", "/");
        if (!isLoaded)
        {
            $(this)[0].toggleToolbar();
        }
        isLoaded = true;
    }
}

}