我的要求是:在网格中显示数据,并且还可以从那里选择几行。用户选择行后,可以按一个按钮来处理选定的行数据。
为实现这一目标,我在WebGrid中添加了一个额外的列,即一个复选框,如下所示:
grid.column("MyColumn",format:@<text><input type="checkbox" name="Select"></text>)
但问题是,如何知道按下按钮时选择了哪些行?我想,我应该在复选框中添加一些事件处理程序,并将那些选定的检查行保存在某个变量中,并在按钮按下事件上发送这些行数据。
添加了WebContenet的快照,我想在按钮点击时处理所选行。
如果这是正确的,请告诉我,可以在MVC中完成或建议我任何替代方式。
答案 0 :(得分:0)
根据本文Get Checked Rows In a Webgrid Using Checkbox MVC3提示,您可以尝试以下方法:
将包含WebGrid的div包装在要提交的表单中
@using (Html.BeginForm("Assign","Home"))
{
<div id="grid">
@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "webgrid-alternating-row",
columns: grid.Columns(grid.Column(header: "Assign?", format:@<text><input class="check-box" id="assignChkBx"name="assignChkBx" type="checkbox" value="@item.Id"/></text>)))
</div>
<p><input type ="submit" value ="Submit" /></p>
}
假设如上所述,定义一个控制器以从webgrid
获取所选行的复选框值[HttpPost]
public ActionResult Assign(FormCollection form)
{
//get collection of selected ids
var chckedValues = form.GetValues("assignChkBx");
//You can use each object if u wish from id
foreach (var id in chckedValues)
{
//get object example.. Customer Customer = Customers.find(id);
//Your Method here like send an item to customer
}
return RedirectToAction("index");
}