在没有控件许可的情况下,可以使用HTML、JQuery和MVC来创建一个简单的网格视图。以下是创建过程的详细步骤。
首先,创建一个MVC 3项目,并为数据创建一个模型类。
        namespace MVCSimpleGrid.Models
        {
            public class EmployeeModel
            {
                public int EmpId { get; set; }
                public string EmployeeName { get; set; }
                public string EmployeeDep { get; set; }
            }
        }
    
接下来,创建一个动作方法和支持功能。
        namespace MVCSimpleGrid.Controllers
        {
            public class HomeController : Controller
            {
                static List<EmployeeModel> _lstEmployee = new List<EmployeeModel>();
                public ActionResult Index()
                {
                    _lstEmployee = GetEmployees();
                    return View(_lstEmployee);
                }
                private List<EmployeeModel> GetEmployees()
                {
                    List<EmployeeModel> _pvtList = new List<EmployeeModel>();
                    // 创建员工数据
                    _pvtList.Add(new EmployeeModel { EmpId = 1, EmployeeName = "员工1", EmployeeDep = "部门1" });
                    _pvtList.Add(new EmployeeModel { EmpId = 2, EmployeeName = "员工2", EmployeeDep = "部门2" });
                    _pvtList.Add(new EmployeeModel { EmpId = 3, EmployeeName = "员工3", EmployeeDep = "部门3" });
                    _pvtList.Add(new EmployeeModel { EmpId = 4, EmployeeName = "员工4", EmployeeDep = "部门4" });
                    return _pvtList;
                }
            }
        }
    
创建视图时,确保每个字段的ID都是唯一的,并且与模型的一个组件相关。
        @model IEnumerable<MVCSimpleGrid.Models.EmployeeModel>
        @{
            ViewBag.Title = "Index";
        }
        <div id="divResult">
            <h2>简易MVC网格视图</h2>
            <table>
                <tr>
                    <th>员工ID</th>
                    <th>员工姓名</th>
                    <th>员工部门</th>
                    <th>操作</th>
                </tr>
                @foreach (var m in Model)
                {
                    <tr>
                        <td>@m.EmpId</td>
                        <td>
                            <div id="divEmpName-@m.EmpId.ToString()" class="visible">@m.EmployeeName</div>
                            <input id="txtEmpName-@m.EmpId.ToString()" type="text" class="hide" value="@m.EmployeeName.ToString()" />
                        </td>
                        <td>
                            <div id="divEmpDep-@m.EmpId.ToString()" class="visible">@m.EmployeeDep</div>
                            <input id="txtEmpDep-@m.EmpId.ToString()" type="text" class="hide" value="@m.EmployeeDep.ToString()" />
                        </td>
                        <td>
                            <button id="btnEdit-@m.EmpId.ToString()" class="visible" onclick="ShowEdit(@m.EmpId); return false;">编辑</button>
                            <button id="btnSave-@m.EmpId.ToString()" class="hide" onclick="SaveEdit(@m.EmpId); return false;">保存</button>
                        </td>
                    </tr>
                }
            </table>
        </div>
    
创建脚本来处理按钮的函数。
        <script type="text/javascript">
            function ShowEdit(par) {
                $("#divEmpName-" + par).attr("class", "hide");
                $("#txtEmpName-" + par).attr("class", "visible");
                $("#divEmpDep-" + par).attr("class", "hide");
                $("#txtEmpDep-" + par).attr("class", "visible");
                $("#btnEdit-" + par).attr("class", "hide");
                $("#btnSave-" + par).attr("class", "visible");
            }
            function SaveEdit(par) {
                $("#divEmpName-" + par).attr("class", "visible");
                $("#txtEmpName-" + par).attr("class", "hide");
                $("#divEmpDep-" + par).attr("class", "visible");
                $("#txtEmpDep-" + par).attr("class", "hide");
                $("#btnEdit-" + par).attr("class", "visible");
                $("#btnSave-" + par).attr("class", "hide");
                var _empName = $("#txtEmpName-" + par).val();
                var _empDep = $("#txtEmpDep-" + par).val();
                var url = '@Url.Action("Index","Home")';
                $.post(url, { Id: par, empName: _empName, empDep: _empDep },
                    function (data) {
                        $("divResult").html(data);
                    });
            }
        </script>
    
除了编写代码部分,还需要实现支持SaveEdit()的Ajax版本的Index动作方法。
        [HttpPost]
        public ActionResult Index(int Id, string empName, string empDep)
        {
            _lstEmployee[Id - 1].EmployeeName = empName;
            _lstEmployee[Id - 1].EmployeeDep = empDep;
            return View(_lstEmployee);
        }