我希望通过更改DropDownList,网格更新和填充新数据,下面您可以看到我的代码,我不知道如何在dropdownlist上运行事件以及如何将选定项目传递给控制器和更新我的网DropdownList更改事件,更改Kendo网格数据
这是我的看法:
<div class="col-md-4">
<div class="form-group">
@Html.Label("questionnaireName", new {@class = "control-label col-md-3"})
<div class="col-md-9" onclick="">
@Html.DropDownList("questionnairesID", null, new {style = "width:162px;Height:25px"})
@*@Html.ValidationMessageFor(model => model.questionnairesID)*@
</div>
</div>
</div>
<div>
@(Html.Kendo().Grid<Mehvar_New.Models.QuestionnaireDetail>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.QuestionText);
columns.Bound(c => c.Value);
columns.Command(command => {command.Destroy(); }).Width(180);
})
.ToolBar(toolbar => {
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.Model(model => model.Id(p => p.ID))
.Read(read => read.Action("QuestionnaireDetail_Read", "QuestionGrid"))
.Create(create => create.Action("QuestionnaireDetail_Create", "QuestionGrid"))
.Update(update => update.Action("QuestionnaireDetail_Update", "QuestionGrid"))
.Destroy(destroy => destroy.Action("QuestionnaireDetail_Destroy", "QuestionGrid"))
)
)
,这是我的控制器:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using Mehvar_New.Models;
namespace Mehvar_New.Controllers
{
public class QuestionGridController : Controller
{
private proshat_94Entities db = new proshat_94Entities();
public ActionResult Index()
{
Questionnaires questionnaires = new Questionnaires();
Customer customer = new Customer();
ViewBag.questionnairesID = new SelectList(db.Questionnaires, "QuestionnaireID", "QuestionnaireName");
ViewBag.Code = new SelectList(db.Customer, "Code", "Name");
return View();
}
public ActionResult QuestionnaireDetail_Read([DataSourceRequest]DataSourceRequest request)
{
var questionnairedetail = db.QuestionnaireDetail.ToList(); ;
DataSourceResult result = questionnairedetail.ToDataSourceResult(request, questionnaireDetail => new
{
ID = questionnaireDetail.ID,
QuestionText = questionnaireDetail.QuestionText,
Value = questionnaireDetail.Value,
});
return Json(result);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult QuestionnaireDetail_Create([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<QuestionnaireDetail> questionnairedetail)
{
var entities = new List<QuestionnaireDetail>();
if (questionnairedetail != null && ModelState.IsValid)
{
foreach(var questionnaireDetail in questionnairedetail)
{
var entity = new QuestionnaireDetail
{
QuestionText = questionnaireDetail.QuestionText,
Value = questionnaireDetail.Value,
};
db.QuestionnaireDetail.Add(entity);
entities.Add(entity);
}
db.SaveChanges();
}
return Json(entities.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult QuestionnaireDetail_Update([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<QuestionnaireDetail> questionnairedetail)
{
var entities = new List<QuestionnaireDetail>();
if (questionnairedetail != null && ModelState.IsValid)
{
foreach(var questionnaireDetail in questionnairedetail)
{
var entity = new QuestionnaireDetail
{
ID = questionnaireDetail.ID,
QuestionText = questionnaireDetail.QuestionText,
Value = questionnaireDetail.Value,
};
entities.Add(entity);
db.QuestionnaireDetail.Attach(entity);
db.Entry(entity).State = EntityState.Modified;
}
db.SaveChanges();
}
return Json(entities.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult QuestionnaireDetail_Destroy([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<QuestionnaireDetail> questionnairedetail)
{
var entities = new List<QuestionnaireDetail>();
if (ModelState.IsValid)
{
foreach(var questionnaireDetail in questionnairedetail)
{
var entity = new QuestionnaireDetail
{
ID = questionnaireDetail.ID,
QuestionText = questionnaireDetail.QuestionText,
Value = questionnaireDetail.Value,
};
entities.Add(entity);
db.QuestionnaireDetail.Attach(entity);
db.QuestionnaireDetail.Remove(entity);
}
db.SaveChanges();
}
return Json(entities.ToDataSourceResult(request, ModelState));
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
最好的方法是使用JQuary和ajax从控制器获取数据并将其添加到网格。 – Hadee
谢谢@Hadee我做了一些工作,这是我的脚本: –
$('#qustionid')。change(function(){ var selectedValue = $(this).val(); $ .ajax({url : 'QuestionnaireDetail_Read', 类型: 'POST', 数据:JSON.stringify({了selectedValue:了selectedValue}), 数据类型: 'JSON', 的contentType: '应用/ JSON', 成功:功能(结果){ (“#grid”)。data(“kendoGrid”)。dataSource = new kendo.data.DataSource({data:result}); $('#grid')。data(“kendoGrid”)。dataSource。 read(); $('#grid')。data(“kendoGrid”)。refresh(); } }) ; }); –