Asp.net mvc 2 如何掌握和详述MVC2+Jdgrid

Asp.net mvc 2 如何掌握和详述MVC2+Jdgrid,asp.net-mvc-2,jqgrid,Asp.net Mvc 2,Jqgrid,情景: 假设下面的类 public class remate { public virtual int id { get; set; } public virtual DateTime fecha { get; set; } ... public virtual List<detalle_remate> detalle_remate { get; set; } ... } 对于类remate的每一行,都有n行detalle_re

情景: 假设下面的类

public class remate
{       
    public virtual int id { get; set; }
    public virtual DateTime fecha { get; set; }
    ...
    public virtual List<detalle_remate> detalle_remate { get; set; }
    ...
}
对于类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中时发送。我应该如何添加这些信息? *将JSON作为买办发送而不在网格中显示

有人能帮我举个例子吗?

当更改此ajaxData={id:rowData.id};对此ajaxData={cliente_compador:$cliente_compador.val};干得好

客户买办被包括在ActionResult ABM的formCollection中

<% 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>