【问题标题】:Validate Identical / Duplicate Value on Kendo Grid Column验证剑道网格列上的相同/重复值
【发布时间】:2013-09-13 03:44:45
【问题描述】:

我卡在我想验证 Shift Day 的列并将其限制为 Unique Data 的地方,我有一个 DropDownlist 用于 Days 但我想在它已经在 Kendo Grid 中时显示一条消息。 .

这是我的剑道网格

 $("#customerContactGrid").kendoGrid({
        scrollable: false,
        sortable: true,
        pageable: true,
        dataSource: {
            transport: {
                read: {
                    url: '/Client/LoadClientCustomerLocationContactList?clientCusLocId=' + clientCusLocId,
                    dataType: "json",
                    type: "POST"
                }

            },
            pageSize: 10
        },
        rowTemplate: kendo.template($("#clientContactTemplate").html().replace('k-alt', '')),
        altRowTemplate: kendo.template($("#clientContactTemplate").html())
    });

这是我的下拉列表

<span>
                @Html.DropDownList("ddlShiftDay", new SelectList(ViewBag.ShiftList, "ID", "Display_Value", clientCustomerShiftDay), "[Please Select]",
          new Dictionary<string, object>
                {
                    {"class","validate[required] inputLong"}
                })
            </span>

这是我的控制器:

private void GetShiftList()
        {
            // get status list from lookups
            var shiftlist = (from a in db.Lookups
                             where a.Domain == "AVAILABLEDAY"
                             select a).ToList();
            // add status list to a data container be called in view
            ViewBag.ShiftList = shiftlist;
        }

希望有人可以帮助我显示一条消息,提示用户是否输入了网格列中已经存在的数据

【问题讨论】:

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


    【解决方案1】:

    在你的问题中没有什么需要理解的

    您使用的剑道 UI 由 ajax 调用填充

    url: '/Client/LoadClientCustomerLocationContactList?clientCusLocId=' + clientCusLocId,
    dataType: "json",
    type: "POST"
    

    这又由服务器端方法填充。

    现在下拉选择是一个客户端事件,它再次在服务器上触发一个新的 AJAX 调用。

    比较数据有两种方法:

    no.1 在服务器上保存上一次ajax调用的结果,并在服务器本身上比较下一次AJAX调用的结果,如果数据是公共的则返回null

    no.2 在接收到下拉事件的 ajax 调用结果时,使用客户端脚本进行比较。

    更新

    方法 #2 的内容可能会像

    $(".dayDropDown").change(function(){
            
               var str = $( this ).text();
               var tableData = $("#customerContactGrid").html();
               if(tableData.indexOf(str) != -1){  // find the day in table data
                        //True condition statements
               }else{
                        //False condition statements
               }
                
    });
    

    【讨论】:

    • 先生,您给的那个有问题。 . tabledata 返回 Grid 的整个 HTML 文件,但不返回其值
    • 这里的tableData是表格的html标记的字符串对象,它将包含标记和标记中的数据。
    • 先生,我使用了这种方法,但它只返回我的剑道网格的最后一个值
    【解决方案2】:

    我用这个函数导出一个网格:

    function ExportGrid(gridName, exportTitle, exportFormat) {
    
            showWaitIndicator(true);
            var grid = $('#' + gridName).data('kendoGrid');
            var exportGridRequest = {            
                title: exportTitle,
                columns: JSON.stringify(grid.columns),
                data:JSON.stringify(grid.dataSource.data().toJSON()),
                format:exportFormat
            };
            $.ajax({
                type: "POST",
                url: '@Url.Action("ExportCreate","Grid")',
                datatype: "json",
                traditional: true,
                data: exportGridRequest,
                success: function (data, status, jqXHR) {
                    showWaitIndicator(false);
                    if (data.FileIdentifier != null) {
    
                        window.location.href='@Url.Action("DownloadFile")?fileIdentifier='+data.FileIdentifier;
                   } else
                       alert(jqxhr.responseText);               
                },
                error: function (xhr, status, error) {
                    showWaitIndicator(false);
                    result = false;
                    var msg = JSON.parse(xhr.responseText);
                    var err = msg.Message;
                    alert(xhr.responseText);
                }
            });
    
        }
    

    data 属性不是轻量级的,因为它包含网格中的所有数据,但除非您进行一些花哨的搜索,否则您可以获得一个网格实例:

    var grid = $('#' + gridName).data('kendoGrid');
    var columns= JSON.stringify(grid.columns);
    var data=JSON.stringify(grid.dataSource.data().toJSON());
    

    据我所知,您的搜索需要使用列和数据(分组很棘手)。通过循环 div 客户端的所有元素可能有一种更快的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多