나는 꽤 언젠가 이것을 고심하고 있습니다. 그리드 안에 여러 개의 드롭 다운리스트가있는 검도 그리드가 있습니다. 외래 키 열을 사용하여 표에 드롭 다운 목록을 넣었습니다. 인라인 편집의 격자가 선택한 드롭 다운 목록 값을 컨트롤러로 보내지 않고 이전 값을 전송합니다. 무엇이 잘못 될지 잘 모르겠다. 어떤 단서가 도움이 될 것입니다.외래 키 보내기 인라인 편집시 검도 그리드의 열 값을 컨트롤러에 입력
코드 :
그리드는이 작업에서 데이터를 가져옵니다
@(Html.Kendo().Grid(Model.App_Client_Mapping)
.Name("AppAccountInternalGrid")
.Events(ev => ev.Edit("OnGridEdit"))
.Columns(columns =>
{
columns.Bound(p => p.AccountMappingID).Title("AccountMappingID").Width(130).Hidden(true);
columns.ForeignKey(p => p.Level1ID, (System.Collections.IEnumerable)ViewData["level1"], "Level1ID", "Level1").Title("Level 1").Width(150).HtmlAttributes(new { id = "Level1Dropdown", data_value_primitive = true });
columns.ForeignKey(p => p.Level2ID, (System.Collections.IEnumerable)ViewData["level2"], "Level2ID", "Level2").Title("Level 2").Width(150).HtmlAttributes(new { id = "Level2Dropdown" });
columns.Bound(p => p.ExternalAccount).Title("ExternalAccount").Width(150);
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(50)
.Model(model =>
{
model.Id(p => p.AccountMappingID);
model.Field(p => p.AccountMappingID).Editable(false);
model.Field(p => p.Level1ID).DefaultValue(1).Editable(true);
model.Field(p => p.Level1).Editable(true);
model.Field(p => p.Level2ID).DefaultValue(0).Editable(true);
model.Field(p => p.Level2).Editable(true);
}
)
.Update("EditingInline_Update", "AppAccounts")
.ServerOperation(false)
)
)
컨트롤러
보기. 뷰에는 그리드와 함께 다른 요소가 있으므로 뷰 모델을 바인딩했습니다.
public ActionResult AppInternal(int clientid)
{
var result = new AppViewModel();
result.App_Client_Mapping=_unitofwork.AppInternal.Get(clientid);
var level1 = level1list.Select(x => new App_Client_Mapping
{
Level1ID = x.LevelID,
Level1 = x.Level1
}).ToList();
var level2 = level2list.Select(x => new App_Client_Mapping
{
Level2ID = x.Level2ID,
Level2 = x.Level2
}).ToList();
ViewData["level1"] = level1;
ViewData["level2"] = level2;
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditingInline_Update([DataSourceRequest] DataSourceRequest request, App_Client_Mapping mapping)
{
//save the mapping in the database tables
return Json(new[] { mapping }.ToDataSourceResult(request, ModelState));
}
뷰 모델 :
AppViewModel : EF에서
public class AppMappingViewModel
{
public IEnumerable<App_Client_Mapping> App_Client_Mapping { get; set; }
//other fields
}
자동 생성 app_client_mapping 클래스 : 데이터 세트가 컨트롤러에 전달
public class app_client_mapping
{
public int AccountMappingID{get;set;}
public int Level1ID{get;set;}
public string Level1{get;set;}
public int Level2ID{get;set;}
public string Level2{get;set;}
public string ExternalAccount{get;set;}
}
. 그리드의 외부 로컬 양 (텍스트 상자)의 업데이트 된 값만 전송됩니다. 업데이트 된 드롭 다운 값은 그리드로 보내지지 않습니다. 왜 이런 일이 일어나는지에 대한 아이디어는 큰 도움이 될 것입니다.
감사합니다.
당신이 당신의 모델을 보여줄 수 :
여기에 몇 가지 코드 예제가있다 코드를 사용 하시겠습니까? – NRW