0

当用户使用 ajax 更改下拉值时,我想更改网格日期。这是我的 C# 代码:

public ActionResult Index(string name)
    {
        ViewBag.Drop = db.Students.Select(r => r.Fname);
        var model = from r in db.Students
                    where r.Fname == name
                    select r;

        return View(model);
    }

这是cshtml文件:

 @using (Ajax.BeginForm("Index", new AjaxOptions
    {
        UpdateTargetId = "grid",

        HttpMethod = "GET"
    }
        ))
    {

         @Html.DropDownList("name", new SelectList(ViewBag.Drop));
         <input type = "submit" value = "submit" />
    }
    <div id= "grid">

    </div>

我的问题是,当我更改下拉值时,所有视图都会再次显示。我不想看到新视图,只想更改网格数据。我怎样才能做到这一点?

4

1 回答 1

0

您是否有仅返回 Grid 数据的操作方法?如果没有,创建一个

public ActionResult GridData(string name)
{
   var gridItems=repo.GetCustomers(name).ToList();   
   //the above method can be replaced by your 
   // actual method which returns the data for grid

    return View(model);
}

我只是假设您有一个带有属性的客户模型,FirstName并且LastName您想在网格中显示客户列表。您可以用您的实际类名和属性替换它们。

确保您有一个名为的视图GridData.cshtml,它将为您的 Grid 呈现 HTML 标记

@model IEnumerable<YourNameSpace.Customer>
@{
  Layout=null;
}
<table>
@foreach(var item in Model)
{
  <tr><td>item.FirstName</td><td>item.LastName</td></td>
}

我会编写如下所示的简单(和干净)代码,而不是使用 Ajax.BeginForm

@Html.DropDownList("name", new SelectList(ViewBag.Drop));
<div id= "grid"></grid>

<script type="text/javascript">
 $(function(){

   $("select[name='name']").change(function(){
      var url="@Url.Action("GridData","YourControllerName")"+"?name="+$(this).val();
      $("#grid").load(url);
   });   

 });    
</script>
于 2012-06-21T21:42:55.827 回答