2011-01-10 54 views
1

我正在嘗試JQGrid ASP.NET MVC2版本。jqGrid ASP.NET MVC2 DataBind NullReferenceException

創建的模型和控制器:

var itemsGridModel = new OrderItemsjqGridModel(); 
    itemsGridModel.OrderItemsGrid.DataUrl = Url.Action("ItemsDataRequested", new {OrderID = OrderID, CustomerID = CustomerID }); 
    orderVM.orderItemsGrid = itemsGridModel; 


    return View(orderVM); 

的ItemsDataRequested:

public JsonResult ItemsDataRequested(int OrderID, int CustomerID) 
{ 
    // Get both the grid Model and the data Model 

    var gridModel = new OrderItemsjqGridModel(); 
    var orderItems = ordersRepository.GetOrder(OrderID).ItemsInOrders.ToList(); 

    IQueryable<ItemsInOrder> myItems = orderItems.AsQueryable<ItemsInOrder>(); 

    return gridModel.OrderItemsGrid.DataBind(myItems); 
} 

我得到最後一行一個NullReferenceException。 myItems有1個項目,其中所有值都已填充。

任何想法我做錯了什麼?

謝謝。

堆棧跟蹤:

at Trirand.Web.Mvc.Util.PrepareJsonResponse(JsonResponse response, JQGrid grid, DataTable dt) 
    at Trirand.Web.Mvc.Util.ConvertToJson(JsonResponse response, JQGrid grid, DataTable dt) 
    at Trirand.Web.Mvc.JQGrid.FilterDataSource(Object dataSource, NameValueCollection queryString, IQueryable& iqueryable) 
    at Trirand.Web.Mvc.JQGrid.GetJsonResponse() 
    at Trirand.Web.Mvc.JQGrid.DataBind() 
    at Trirand.Web.Mvc.JQGrid.DataBind(Object dataSource) 
    at TechRun.UI.Controllers.OrdersController.ItemsDataRequested(Int32 OrderID, Int32 CustomerID) in y:\work\yosi\source\Techrun\TechRun.UI\Controllers\OrdersController.cs:line 118 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 

型號:

public class OrderItemsjqGridModel 
{ 
    public JQGrid OrderItemsGrid { get; set; } 

public OrderItemsjqGridModel() 
{    
    OrderItemsGrid = new JQGrid 
        { 
         Columns = new List<JQGridColumn>() 
         { 
          new JQGridColumn { DataField = "OrderID", 
               // always set PrimaryKey for Add,Edit,Delete operations 
               // if not set, the first column will be assumed as primary key 
               PrimaryKey = true, 
               Editable = false, 
               Width = 30 }, 
          new JQGridColumn { DataField = "ItemID", 
               PrimaryKey = true, 
               Editable = true, 
               Width = 120}, 
          new JQGridColumn { DataField = "ItemDescription", 
               Editable = true, 
               Width = 300}, 
          new JQGridColumn { DataField = "NumOfItems", 
               Editable = true, 
               Width = 50 
               }, 
          new JQGridColumn { DataField = "CostOfItem", 
               Editable = true, 
               Width = 75 }, 
          new JQGridColumn { DataField = "TotalCost", 
               Editable = false 
               }, 
          new JQGridColumn { DataField = "SuppolyDate", 
               Editable = true, 
               Width = 120, 
               DataFormatString = "{0:d}" }, 
         }, 
         Width = Unit.Pixel(640), 
         Height = Unit.Percentage(100) 
        }; 

    OrderItemsGrid.ToolBarSettings.ShowRefreshButton = true; 
    OrderItemsGrid.ToolBarSettings.ShowAddButton = true; 
    OrderItemsGrid.ToolBarSettings.ShowDeleteButton = true; 
    OrderItemsGrid.ToolBarSettings.ShowEditButton = true; 
} 

} 
+0

同樣的事情發生在我身上,運氣好嗎? – IronicMuffin 2011-07-19 18:51:45

回答

7

我知道這是一個老問題,但我一直在尋找的,沒有運氣同樣的問題的解決方案,我返回到我的代碼進行了更多的異常分析,並且我找到了解決方案,我最好在這裏記錄它,這樣任何人都會遇到同樣的問題。

我發現原因,模型JGridColumn名稱是不同於返回的SQL查詢字段,其中一個模型列有拼寫錯誤。

確保所有JGrid列的名稱都與SQL查詢列的名稱相同。

+0

嗨沙迪,這確實是一個老問題,我再也沒有消息來源了,所以我接受你的話......我會把這個標記爲答案,如果有人會在這裏發帖,評估 :-) – Dani 2012-03-10 10:22:28