【问题标题】:KendoUI Grid Foreign Key not refreshingKendo UI Grid外键不刷新
【发布时间】:2014-06-08 12:37:39
【问题描述】:

我在使用 KendoUI 中的 Grid 小部件时遇到问题。我的页面上有两个网格,每个网格代表数据库中的一个表。这些网格中的第二个包含一个将其链接到第一个的外键列。当我在第一个网格中添加或更新一行时,我希望第二个网格中的外键下拉列表刷新,但如果没有整页刷新(我试图避免),我似乎无法做到这一点.我可以使用 JavaScript 方法让网格本身正确刷新,但外键的 dropwonlist 值不会改变。

页面代码:

<div id="TableResults" style="height: 500px; overflow-y: scroll;">
@(Html.Kendo().Grid<SRSDatabaseCore.Data.TranslationTable>()
   .Name("translationGrid")
   .Columns(columns =>
   {
      columns.Bound(p => p.Id);
      columns.Bound(p => p.Sequence);
      columns.Bound(p => p.Description);
   })
   .Editable(editable => editable.Mode(GridEditMode.InCell)) // Use in-cell editing mode
   .DataSource(dataSource => dataSource
      .Ajax()
      .Batch(true)
      .ServerOperation(false)
      .Model(model => 
      {
        model.Id(p => p.Id);
        model.Field(field => field.Id).Editable(false);
      })
      .Create(create => create.Action("Create_TranslationTable", "Modify", new { tableName = ViewData["SelectedTableName"] }))
      .Read(read => read.Action("Read_TranslationTable", "Modify", new { tableName = ViewData["SelectedTableName"] }))
      .Update(update => update.Action("Update_TranslationTable", "Modify", new { tableName = ViewData["SelectedTableName"] }))
   )
   .ToolBar(toolbar =>
   {
     toolbar.Create();
     toolbar.Save();
   })
   .Events(e => e.DataBound("onTranslationModify"))
   .Pageable()
   .Sortable()
)

@(Html.Kendo().Grid<SRSDatabaseCore.Data.TranslationTableSource>()
  .Name("translationSourceGrid")
  .Columns(columns =>
  {
     columns.Bound(p => p.Id);
     columns.ForeignKey(p => p.TranslationTableId, new SelectList((@ViewData["TranslationTableRows"] as List<SRSDatabaseCore.Data.TranslationTable>), "Id", "Description"));
     columns.Bound(p => p.Value);
  })
  .Editable(editable => editable.Mode(GridEditMode.InCell)) // Use in-cell editing mode
  .DataSource(dataSource => dataSource
     .Ajax()
     .Batch(true)
     .ServerOperation(false)
     .Model(model => 
     {
        model.Id(p => p.Id);
        model.Field(field => field.Id).Editable(false);
     })
     .Create(create => create.Action("Create_TranslationTableSource", "Modify", new { tableName = ViewData["SelectedTableName"] }))
     .Read(read => read.Action("Read_TranslationTableSource", "Modify", new { tableName = ViewData["SelectedTableName"] }))
     .Update(update => update.Action("Update_TranslationTableSource", "Modify", new { tableName = ViewData["SelectedTableName"] }))
  )
  .ToolBar(toolbar =>
  {
     toolbar.Create();
     toolbar.Save();
  })
  .Pageable()
  .Sortable()
)
</div>

JavaScript:

function onTranslationModify(e) {
   var sourceGrid = $('#translationSourceGrid').data('kendoGrid');
   sourceGrid.dataSource.page(1);
   sourceGrid.dataSource.read();
}

控制器:

   public ActionResult Read_TranslationTableSource([DataSourceRequest] DataSourceRequest request, string tableName)
   {
      IEnumerable<TranslationTable> translationTables = DatabaseStructure.GetTranslationTableByName(GetClientNameFromCookie(), tableName, SysConnection);
      ViewData["TranslationTableRows"] = translationTables;

      List<TranslationTableSource> TranslationTableSourceRows = DatabaseStructure.GetTranslationTableSourceByTranslationTableName(GetClientNameFromCookie(), tableName, SysConnection);
      ViewData["SelectedTableName"] = tableName;

      return Json(TranslationTableSourceRows.AsQueryable().ToDataSourceResult(request));
   }

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery kendo-ui kendo-grid


    【解决方案1】:

    你可以参考下面的答案,我认为它会解决你的问题,

    Kendo Grid Foreign key column bind dynamically

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      相关资源
      最近更新 更多