2011-11-30 67 views
0

方案: 假设以下类如何-掌握和详细MVC 2 + Jdgrid

public class remate 
{  
    public virtual int id { get; set; } 
    public virtual DateTime fecha { get; set; } 
    ... 
    public virtual List<detalle_remate> detalle_remate { get; set; } 
    ... 
} 

public class detalle_remate 
{ 
    public virtual int id { get; set; } 
    public virtual remate remate { get; set; } 
    public virtual cliente cliente_comprador { get; set; } 
    public virtual cliente cliente_vendedor { get; set; } 
    ... 
} 

对于类remate的每一行有detalle_remate的n行。 用户通过首先选择顾客买方(主)的数目输入数据,可以是用于相同的买方

detalle_remate的多于一行和该控制器

public class RemateController : Controller 
{  
    private remateRepository Repo = new remateRepository(); 
    private remate entity; 
    private List<detalle_remate> lineas = new List<detalle_remate>(); 
    public ActionResult Crear() 
    { 
     entity = new remate(); //crear nueva instancia 
     entity.fecha = DateTime.Today; 
     ... 
     return View(entity); 
    } 

    public ActionResult List(string sidx, string sord, int page, int rows) 
    { 
     int pageIndex = Convert.ToInt32(page - 1); 
     int rowIndex = Convert.ToInt32(rows); 
     var datos = lineas.OrderBy(x => x.id).Skip(pageIndex * rowIndex).Take(rowIndex); 
     double totalregistros = lineas.Count(); 
     int totalPages = (int)Math.Ceiling((decimal)totalregistros/(decimal)rowIndex); 
     var data = new 
     { 
      total = totalPages, 
      page = page, 
      records = totalregistros, 
      rows = from a in datos 
        select new 
        { 
         cell = new string[] { 
          a.id.ToString(), 
          a.cliente_vendedor.razon_social, 
          ... 
         } 
        } 
     }; 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult ABM(detalle_remate entity, FormCollection formCollection) 
    { 
... 
    } 
} 
} 

设计视图CREAR是以下

<% using (Html.BeginForm()) 
    {%> 
    <%= Html.ValidationSummary(true) %> 
    <fieldset> 
    <%=Html.LabelFor(m => m.id) %><%=Html.EditorFor(m => m.id) %> 
    <%=Html.ValidationMessageFor(m => m.id) %> <br /> 
    <%=Html.LabelFor(m => m.fecha) %><%=Html.EditorFor(m => m.fecha) %> 
    <%=Html.ValidationMessageFor(m => m.fecha) %><br /> 
    <%=Html.Label("Comprador:") %><%=Html.DropDownList("cliente_comprador", (SelectList)ViewData["listaclientes"])%> <br /> 
    <table id="list" class="scroll" cellpadding="0" cellspacing="0"></table> 
    <div id="listPager" class="scroll" style="text-align:center;"></div> 
    <div id="listPsetcols" class="scroll" style="text-align:center;"></div> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
    var updateDialog = { 
     url: '<%= Url.Action("ABM", "Remate") %>' 
      , closeAfterAdd: true 
      , closeAfterEdit: true 
      , modal: true 
      , onclickSubmit: function(params) { 
       var ajaxData = {}; 
       var list = $("#list"); 
       var selectedRow = list.getGridParam("selrow"); 
       rowData = list.getRowData(selectedRow); 
       ajaxData = { id: rowData.id }; 
       return ajaxData; 
      } 
      , width: "700" 
    }; 
    $.jgrid.nav.addtext = "Agregar"; 
    $.jgrid.nav.edittext = "Editar"; 
    $.jgrid.nav.deltext = "Borrar"; 
    $("#list").jqGrid({ 
     url: '<%= Url.Action("List", "Remate") %>', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['Número', 'Vendedor', 'Especie', ...], 
     colModel: [ 
       { name: 'id', index: 'id', width: 40, align: 'left', editable: true, editrules: { edithidden: false }, hidedlg: true, hidden: true }, 
       { name: 'cliente_vendedor', index: 'cliente_vendedor', width: 200, align: 'left', editable: true, edittype: 'select', editoptions: { dataUrl: "/Cliente/ClienteSelect" }, editrules: { required: true }, formoptions: { elmsuffix: ' *'} }, 
       { name: 'especie', index: 'especie', width: 70, align: 'left', editable: true, edittype: 'select', editoptions: { dataUrl: "/Especie/EspecieSelect" }, editrules: { required: true }, formoptions: { elmsuffix: ' *'} },...     
       ], 
     pager: $('#listPager'), 
     rowNum: 20, 
     rowList: [5, 10, 20], 
     sortname: 'id', 
     sortorder: "desc", 
     viewrecords: true, 
     imgpath: '/Content/ui-lightness/Images', 
     width: "850", 
     height: "250", 
     ondblClickRow: function(rowid, iRow, iCol, e) { 
      $("#list").editGridRow(rowid, prmGridDialog); 
     } 
    }).navGrid('#listPager', 
      { 
       edit: true, add: true, del: true, search: false, refresh: true 
      }, 
      updateDialog, 
      updateDialog, 
      updateDialog 
     ); 
});  
</script> 
<% } %> 
</fieldset> 

正如你所看到的,应该在信息存储在jdgrid时发送Comprador。我应该如何添加这些信息? *发送JSON作为Comprador的收入而不显示在网格中?

任何人都可以帮助我举一些例子吗?

回答

0

当这个ajaxData = { id: rowData.id };改为这个ajaxData = { cliente_comprador: $("#cliente_comprador").val() };工作正常。

cliente_comprador包含在formCollection上的ActionResult ABM