Asp.net mvc 3 通过dropdownlist选择值在Telerik网格中加载数据

Asp.net mvc 3 通过dropdownlist选择值在Telerik网格中加载数据,asp.net-mvc-3,jquery,gridview,telerik-grid,nopcommerce,Asp.net Mvc 3,Jquery,Gridview,Telerik Grid,Nopcommerce,我是ASP.NETMVC3中Telerik网格的初学者。我尝试用dropdownlist选择值绑定网格。请看下面我的代码 我的网络模型课 public class CustomerEventRolesModels { public int Event { get; set; } public IEnumerable<System.Web.Mvc.SelectListItem> Events { get; set; } public Telerik.Web.Mv

我是ASP.NETMVC3中Telerik网格的初学者。我尝试用dropdownlist选择值绑定网格。请看下面我的代码

我的网络模型课

public class CustomerEventRolesModels
{
    public int Event { get; set; }
    public IEnumerable<System.Web.Mvc.SelectListItem> Events { get; set; }
    public Telerik.Web.Mvc.GridModel<CustomerEventRolesModel> GridData { get; set; }
}

public class CustomerEventRolesModel : BaseNopEntityModel
{
    public string Customer { get; set; }
    public bool Sponsor { get; set; }
    public bool Speaker { get; set; }
}
公共类CustomerVentroleSModels
{
公共int事件{get;set;}
公共IEnumerable事件{get;set;}
public Telerik.Web.Mvc.GridModel GridData{get;set;}
}
公共类CustomerVentroleSModel:BaseNopEntityModel
{
公共字符串Customer{get;set;}
公共bool赞助商{get;set;}
公共广播扬声器{get;set;}
}
My.cshtml

<table id="grdCustomerEventRoleData" class="adminContent" style="display: none">
<tr>
    <td>
        <p>
        </p>
    </td>
</tr>
<tr>
    <td>
        @(Html.Telerik().Grid<CustomerEventRolesModel>(Model.GridData.Data)
    .Name("grdCustomerEventRoles")
              .Columns(columns =>
              {

                  columns.Bound(x => x.Customer);

                  columns.Bound(x => x.Speaker).Template(x => Html.CheckBox("spk", x.Speaker));
                  columns.Bound(x => x.Sponsor).Template(x => Html.CheckBox("spn", x.Sponsor));
              }
        )   .Pageable(settings => settings.Total(Model.GridData.Total)
                        .PageSize(gridPageSize)
                        .Position(GridPagerPosition.Both))
                        .ClientEvents(events => events.OnDataBinding("onDataBinding"))
                        .DataBinding(dataBinding => dataBinding.Ajax().Select("FilterByDropdown", "Customer"))
                        .EnableCustomBinding(true))
        ) )
    </td>
</tr>


@(Html.Telerik().Grid(Model.GridData.Data) .Name(“grdCustomerEventRoles”) .列(列=> { columns.Bound(x=>x.Customer); columns.Bound(x=>x.Speaker).Template(x=>Html.CheckBox(“spk”,x.Speaker)); columns.Bound(x=>x.shandor.Template(x=>Html.CheckBox(“spn”,x.shandor)); } ).Pageable(settings=>settings.Total(Model.GridData.Total) .PageSize(gridPageSize) .位置(GridPagerPosition.两者) .ClientEvents(events=>events.OnDataBinding(“OnDataBinding”)) .DataBinding(DataBinding=>DataBinding.Ajax().Select(“FilterByDropdown”、“Customer”)) .EnableCustomBinding(true)) ) )


var initialLoad=true;
$(“#选择事件”)。更改(函数(){
if($(“#选择事件选项:已选择”).val()>0){
$(“#grdCustomerEventRoleData”).show();
$(“#grdcustomeeventroles”).data(“tGrid”).rebind();
}
否则{
$(“#grdCustomerEventRoleData”).show();
}
});
函数onDataBinding(e){
if(initialLoad==true){
e、 预防默认值();
initialLoad=false;
}
否则{
var classificationId=$(“#选择事件选项:选中”).val();
如果(classificationId!=“”)
e、 数据=$.extend(如数据、{
selEvent:classificationId
});
否则{
e、 预防默认值();
$(“#grdCustomerEventRoleData”).hide();
}
}
}

控制器中的操作

   public ActionResult FirstBind()
    {
        if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
            return AccessDeniedView();

        var model = new CustomerEventRolesModels();

        model.Event = 0;

        List<Nop.Core.Domain.Catalog.Product> products = _productRepository.Table.Where(p => p.EventDate != null && p.EventDate >= DateTime.Now).ToList();

        model.Events = products.Select(p => new System.Web.Mvc.SelectListItem
        {
            Text = p.Name,
            Value = p.Id.ToString()
        });

        var grdmodel = new GridModel<CustomerEventRolesModel>
        {
            Data = null,
            Total = 0
        };

        model.GridData = grdmodel;

        return View(model);
    }

    [HttpPost, GridAction(EnableCustomBinding = true)]
    public ActionResult FilterByDropdown(GridCommand command, int selEvent)
    {
        if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
            return AccessDeniedView();

        if (selEvent == 0)
            return View();

        var model = new CustomerEventRolesModels();

        model.Event = selEvent;

        var roles = (from lst in _customerEventRoleRepository.Table
                     join cust in _customerRepository.Table on lst.CustomerId equals cust.Id
                     join product in _productRepository.Table on lst.EventId equals product.Id
                     join role in _customerRoleRepository.Table on lst.RoleId equals role.Id
                     orderby lst.Id descending
                     select new CustomerEventRolesModel
                     {
                         Id = lst.Id,
                         Customer = cust.Email,
                         Sponsor = (role.Name == "Sponsor") ? true : false,
                         Speaker = (role.Name == "Speaker") ? true : false
                     }).ToList();

        var grdmodel = new GridModel<CustomerEventRolesModel>
        {
            Data = roles,
            Total = roles.Count
        };

        model.GridData = grdmodel;

        return new JsonResult
        {
            Data = model
        };
    }
public ActionResult FirstBind()
{
if(!\u permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
返回AccessDeniedView();
var模型=新的CustomerVentroleSModels();
model.Event=0;
List products=\u productRepository.Table.Where(p=>p.EventDate!=null&&p.EventDate>=DateTime.Now).ToList();
model.Events=products.Select(p=>newsystem.Web.Mvc.SelectListItem
{
Text=p.名称,
值=p.Id.ToString()
});
var grdmodel=新网格模型
{
数据=空,
总数=0
};
model.GridData=grdmodel;
返回视图(模型);
}
[HttpPost,GridAction(EnableCustomBinding=true)]
public ActionResult FilterByDropdown(GridCommand命令,int-selfevent)
{
if(!\u permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
返回AccessDeniedView();
如果(selEvent==0)
返回视图();
var模型=新的CustomerVentroleSModels();
model.Event=selEvent;
var roles=(来自_customerEventRoleRepository.Table中的lst
在lst.CustomerId等于cust.Id的_customerRepository.Table中加入cust
在lst.EventId等于product.Id的_productRepository.Table中加入产品
lst.RoleId等于role.Id上的_customerRoleRepository.Table中的联接角色
orderby lst.Id降序
选择新的CustomerVentroleSModel
{
Id=lst.Id,
客户=客户电子邮件,
赞助商=(role.Name==“赞助商”)?true:false,
Speaker=(role.Name=“Speaker”)?true:false
}).ToList();
var grdmodel=新网格模型
{
数据=角色,
总计=角色数
};
model.GridData=grdmodel;
返回新的JsonResult
{
数据=模型
};
}
FilterByDropdown操作正常,但网格未绑定

我不懂


请帮助。

您退回的型号不对

在FilterByDropdown中尝试以下操作:

    var grdmodel = new GridModel<CustomerEventRolesModel>
    {
        Data = roles,
        Total = roles.Count
    };

    return new JsonResult
    {
        Data = grdmodel
    };
var grdmodel=新网格模型
{
数据=角色,
总计=角色数
};
返回新的JsonResult
{
数据=GRD模型
};

如果您想在编辑行时向Telerik MVC网格添加下拉列表,则需要遵循以下几个步骤(除了使网格ajax绑定和行可编辑之外)

假设我们希望表示名称的列(“模型中的名称”)是一个下拉列表,从中可以选择名称,而不是键入名称。将名为“EditorTemplates”的文件夹添加到包含网格所在视图的文件夹中。对于我们要在正在编辑的行中显示的每个下拉列表,它将包含一个单独的局部视图。制作一个局部视图(如上所述),将其命名为“ClientName.cshtml”,其中包含一个名为“name”的Telerik下拉列表,并绑定到所需的名称列表

@(Html.Telerik().DropDownList())
.姓名(“姓名”)
.BindTo(新选择列表((IEnumerable)视图数据[“客户名称”]、“文本”、“值”))
)

向网格使用的数据类型的“名称”属性添加以下属性,例如网格使用“客户”类,包含“字符串名称”字段:

public类客户{[UIHint(“ClientName”),必需]公共字符串名{get;set;}}}

UIHint属性指定哪个字段
    var grdmodel = new GridModel<CustomerEventRolesModel>
    {
        Data = roles,
        Total = roles.Count
    };

    return new JsonResult
    {
        Data = grdmodel
    };