【问题标题】:Add Text Search to Kendo Grid将文本搜索添加到 Kendo Grid
【发布时间】:2013-04-29 18:16:35
【问题描述】:

我是第一次尝试开源 Kendo Grid。我有基本的网格并运行得很好,但现在我需要添加一个搜索功能,搜索名字和姓氏。我正在尝试在 ajax 中执行此操作,但我遇到了一个错误:

错误:无法调用未定义的方法“读取”

我的代码:

        <div id="search-index">
                <div class="editor-field">   
                    <label>First Name:</label>
                    @Html.TextBox("FirstName")

                    <label style = "margin-left: 15px;">Last Name:</label>
                    @Html.TextBox("LastName", "", new { style = "margin-right: 15px;" })
                </div>            
                <div id="search-controls-index">
                      <input type="button" id="searchbtn" class="skbutton" value="Search" />
                      <input type="button" id="addPersonbtn" class="skbutton" value="Add New Person" onclick="location.href='@Url.Action("AddPerson", "Person")'"/>
                </div>
        </div>

        <div id="index-grid"></div>        
   </div>



    $(document).ready(function () {


        var grid = $('#index-grid').kendoGrid({
            height: 370,
            sortable: true,
            scrollable: true,
            pageable: true,
            dataSource: {
                        pageSize: 8,  
                        transport: {
                                    read: "/Home/GetPeople",
                                    dataType:"json"
                                    }
                        },
            columns: [
                                { field: "FirstName", title: "First Name" },
                                { field: "LastName", title: "Last Name" },
                                { field: "Gender", title: "Gender" },
                                { field: "DOB", title: "Date of Birth", template: '#= kendo.toString(new Date(parseInt(DOB.substring(6))), "MM/dd/yyyy") #' },
                                { field: "IsStudent", title: "Is a Student?" }]
        });


        $("#searchbtn").on('click', function () {
            var fsname = $("#FirstName").val();
            var ltname = $("#LastName").val();

            $.ajax({
                type: 'GET',
                url: '@Url.Content("~/Home/GetPeople")',
                data: { fname: fsname, lname: ltname },
                success: function (data) {
                    grid.dataSource.read();
                },
                error: function () {
                    $("#index-grid").html("An error occured while trying to retieve your data.");
                }
            });
        });
    });

应该很重要,但这是我的控制器(使用 asp MVC 3):

    public JsonResult GetPeople(string fname, string lname)
    {
        if (((fname == "") && (lname == "")) || ((fname == null) && (lname == null)))
       {
                var peopleList = repo.GetPeople();

                return Json(peopleList, JsonRequestBehavior.AllowGet);
         }
        else
        {
            var personResult = repo.GetSearchResult(fname, lname);

            return Json(personResult, JsonRequestBehavior.AllowGet);
        }
    }

【问题讨论】:

  • 它是否对 GetPeople 进行初始页面加载调用?
  • 仅供参考,您可以使用 string.IsNullOrWhitespace(fname) 来检查 null、空字符串或空格。无需手动进行所有这些检查.. 非常混乱。

标签: asp.net-mvc jquery kendo-ui kendo-grid


【解决方案1】:

问题是$("#grid").kendoGrid() 返回一个没有dataSource 字段的jQuery 对象。以下是获取客户端对象引用的方法:http://docs.kendoui.com/getting-started/web/grid/overview#accessing-an-existing-grid

【讨论】:

  • 我可能遗漏了一些东西,但在我看来,我已经在关注它了。变量“网格”是整个网格的,带有数据源等。我对一般的编程很陌生,所以无论如何我都可能做错了。我已经搜索了几天,但没有找到任何人将文本搜索与剑道网格相结合的单一参考。你知道对它的任何引用吗?
  • 您查看我发送的帮助文章了吗?它展示了如何获取对网格客户端对象的引用。
  • 是的,但我仍然不知道如何使用文本框搜索过滤我的网格。我对编程还是很陌生,我知道我最终会弄明白的,但我已经花了 6 个小时在这上面,需要继续前进。感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2012-12-05
  • 1970-01-01
  • 2018-03-31
相关资源
最近更新 更多