Я хочу, изменив DropDownList, обновить сетку и заполнить новыми данными. Ниже вы можете увидеть мой код, я не знаю, как запустить событие в раскрывающемся списке и как передать выбранный элемент в контроллер и обновление моя сеткаDropdownList Change Event, измените данные Kendo Grid
это мой Вид:
<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}), Datatype: 'JSON', CONTENTTYPE: 'применение/JSON', успех: функция (результат) { $ ('# grid'). Data ("kendoGrid"). DataSource = new kendo.data.DataSource ({data: result}); $ ('# grid'). Data ("kendoGrid"). DataSource. read(); $ ('# grid'). data ("kendoGrid"). refresh(); } }) ; }); –