2014-02-24 3 views
1

저는 많은 검색을 해왔지만 이에 대한 명확한 답을 찾지 못했습니다. 나는 그 텍스트 박스와 제출 버튼과 검도 UI 그리드를 설정했다. 그리드의 데이터 소스에 데이터를 게시하여 기준에 따라 결과를 반환하기를 원합니다. 나는 MVC 래퍼를 사용하지 않는다.검색 양식을 기반으로 검도 그리드를 업데이트하십시오.

EDIT : 나는 더 가까이 왔지만 제출을 클릭하면 데이터 소스에 게시물 데이터를 보내지 못하는 것 같습니다. 나는 디버깅을했고 내 $ ("# fmSearch")에 제출했다. jquery 플러그인을 사용하여 제출하면 양식 데이터가 JSON으로 제대로 변환되고 있음을 확인했지만 업데이트 된 정보를 전송하지 않는 것처럼 보였다. 작업을 읽을 수 있도록 서버에 전달합니다.

자바 스크립트

var dsGalleryItem = new kendo.data.DataSource({ 
     transport: { 
      read: { 
       url: '@Url.Content("~/Intranet/GalleryItem/SearchGalleryItems")', 
       type: "POST", 
       data: $("#fmSearch").serializeFormToJSON(), 
       cache: false 
      } 
     }, 
     schema: { 
      model: { 
       id: "galleryItemID", 
       fields: { 
        galleryItemID: { 
         nullable: true 
        }, 
        imageName: {}, 
        collectionName: {}, 
        categoryName: {}, 
        lastUpdatedOn: { type: "date" } 
       } 
      } 
     } 
    }); 




    var gvResults = $("#gvResults").kendoGrid({ 
     autoBind:false, 
      columns: [{ 
       field: "imageName", 
       title: "Item Name", 
       template: "<a href='@Url.Content("~/Intranet/GalleryItem/Details/")#=galleryItemID#'> #=imageName#</a>" 
      }, { 
       field: "collectionName", 
       title: "Collection" 
      }, { 
       field: "categoryName", 
       title: "Category" 
      }, { 
       field: "lastUpdatedOn", 
       title: "Last Updated", 
       format: "{0:M/d/yyyy}" 
      } 
      ], 
      selectable: "row", 
      change: onRowSelect, 
      dataSource: dsGalleryItem 
     }); 






    $("#fmSearch").submit(
     function (event) { 
      event.preventDefault(); 
      dsGalleryItem.read({ data: $("#fmSearch").serializeFormToJSON() }); 
    }); 

MVC 조치

[HttpPost] 
    public JsonResult SearchGalleryItems(string keyword, int? category, int? collection, DateTime? startDate, DateTime? endDate) 
    { 

     var galleryItemList = (from g in db.GalleryItems 
           //where g.imageName.Contains(keyword) 
           select new GalleryItemViewModel 
           { 
            galleryItemID = g.galleryItemID, 
            imageName = g.imageName, 
            collectionName = g.collection.collectionName, 
            categoryName = g.category.categoryName, 
            lastUpdatedOn = g.lastUpdatedOn 
           }); 

     var galleryItemCount = Json(galleryItemList.ToList()); 

     return Json(galleryItemList.ToList()); ; 
    } 

동작은 지금 그냥 그리드에 양식을 연결하는 방법을 알 필요가 다른 데이터를 검색하도록 설정되지 않습니다.

+0

그래서 코드가 올바른 외모와 컨트롤러 메소드가 호출되지 않습니다 ??? 매개 변수와 관련이있는 것 같습니다. 나는 항상 그런 문제를 겪는다. 매개 변수를 제거하고 데이터가없는 컨트롤러를 호출하십시오. – CSharper

+0

컨트롤러가 호출됩니다. 그러나 postdata가 전송되지 않습니다. 예 : 기본적으로 1로 설정된 드롭 다운이 있습니다. 페이지가로드되면 1이 카테고리로 컨트롤러에 전송됩니다. 디버그의 값은 1로 표시됩니다. 텍스트 상자에 키워드를 입력하고 제출을 누르지 만 키워드가 결코 도달하지 않습니다. 카테고리는 여전히 1로 보내집니다. 그것은 이전 데이터를 게시하고 양식에서 새 데이터를 게시하지 않는 것과 같습니다. – Lrayh

+0

답이 여전히 필요합니다. 왜 이런 일이 일어나고 있는지에 대한 생각? – Lrayh

답변

0

발견. 나는이 있었다 :

그것은이 일 필요가
dsGalleryItem.read({ data: $("#fmSearch").serializeFormToJSON() }); 

:

dsGalleryItem.read($("#fmSearch").serializeFormToJSON()); 
관련 문제