Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新子网格时刷新父Kendo MVC网格_C#_Asp.net Mvc 3_Asp.net Mvc 4_Kendo Ui_Kendo Grid - Fatal编程技术网

C# 更新子网格时刷新父Kendo MVC网格

C# 更新子网格时刷新父Kendo MVC网格,c#,asp.net-mvc-3,asp.net-mvc-4,kendo-ui,kendo-grid,C#,Asp.net Mvc 3,Asp.net Mvc 4,Kendo Ui,Kendo Grid,我想在更新子网格记录时更新父网格,这可能吗?如果有的话,有人能提供一些建议吗 首先,我不确定哪个事件最适合在子网格上使用。我希望启动子网格的CRUD操作,然后再次加载父网格的内容,最好使用Ajax 下面是我的网格: @{ ViewBag.Title = "Bills: Parent/Child"; } <h2>Bills Index</h2> @(Html.Kendo().Grid<BillParent>() .Name("BillPare

我想在更新子网格记录时更新父网格,这可能吗?如果有的话,有人能提供一些建议吗

首先,我不确定哪个事件最适合在子网格上使用。我希望启动子网格的CRUD操作,然后再次加载父网格的内容,最好使用Ajax

下面是我的网格:

@{
    ViewBag.Title = "Bills: Parent/Child";
}

<h2>Bills Index</h2>

@(Html.Kendo().Grid<BillParent>()
    .Name("BillParentsGrid")
    .Columns(columns =>
    {
        columns.Bound(h => h.Category);
        columns.Bound(h => h.Description);
        columns.Bound(h => h.Amount);
        columns.Command(command =>
        {
            command.Edit();
        }).Width(95);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(h => h.BillId);
            model.Field(h => h.BillId).Editable(false);
        })
        .Events(events => events.Error("error_handler"))
        .Read(read => read.Action("BillParents_Read", "Bill"))
        .Update(update => update.Action("BillParent_Update", "Bill"))
    )
    .Events(events => events.DataBound("dataBound"))
    .ClientDetailTemplateId("BillChildren")

      )

<script id="BillChildren" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<BillChild>()
          .Name("BillChildren_#=BillId#")
          .Columns(columns =>
          {
              columns.Bound(d => d.BillId).Width(50);
              columns.Bound(d => d.Description).Width(150);
              columns.Bound(d => d.Amount).Width(80);
              columns.Command(command =>
              {
                  command.Edit();
                  command.Destroy();
              }).Width(55);
          })
          .DataSource(dataSource => dataSource
              .Ajax()
              .Model(model =>
              {
                  model.Id(d => d.BillId);
                  model.Field(d => d.BillId).Editable(false);
              })
            .Events(events => events.Error("error_handler"))
            .Read(read => read.Action("BillChildren_Read", "Bill", new { id = "#=BillId#" }))
            .Update(update => update.Action("BillChild_Update", "Bill"))
            .Create(create => create.Action("BillChild_Create", "Bill", new { id = "#=BillId#" }))
            .Destroy(destroy => destroy.Action("BillChild_Destroy", "Bill")))

          .ToolBar(tools => tools.Create())
          .ToClientTemplate()
          )
</script>
@{
ViewBag.Title=“票据:父/子”;
}
票据指数
@(Html.Kendo().Grid())
.Name(“BillParentsGrid”)
.列(列=>
{
columns.Bound(h=>h.Category);
columns.Bound(h=>h.Description);
columns.Bound(h=>h.Amount);
columns.Command(Command=>
{
command.Edit();
}).宽度(95);
})
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(h=>h.BillId);
model.Field(h=>h.BillId).可编辑(false);
})
.Events(Events=>Events.Error(“错误处理程序”))
.Read(Read=>Read.Action(“BillParents\u Read”,“Bill”))
.Update(Update=>Update.Action(“BillParent\u Update”,“Bill”))
)
.Events(Events=>Events.DataBound(“DataBound”))
.ClientDetailTemplateId(“BillChildren”)
)
@(Html.Kendo().Grid())
.Name(“BillChildren#=BillId#”)
.列(列=>
{
columns.Bound(d=>d.BillId).Width(50);
columns.Bound(d=>d.Description).Width(150);
columns.Bound(d=>d.Amount).Width(80);
columns.Command(Command=>
{
command.Edit();
command.Destroy();
}).宽度(55);
})
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(d=>d.BillId);
model.Field(d=>d.BillId).可编辑(false);
})
.Events(Events=>Events.Error(“错误处理程序”))
.Read(Read=>Read.Action(“BillChildren_Read”,“Bill”,new{id=“#=BillId#”}))
.Update(Update=>Update.Action(“BillChild\u Update”,“Bill”))
.Create(Create=>Create.Action(“BillChild_Create”,“Bill”,new{id=“#=BillId#”}))
.Destroy(Destroy=>Destroy.Action(“BillChild\u Destroy”、“Bill”))
.ToolBar(tools=>tools.Create())
.ToClient模板()
)

非常感谢。

我终于把它破解了

事件需要在数据源上,使用同步事件,而不是网格本身

短版

.DataSource(dataSource => dataSource
                  .Ajax()
                  .Model(model =>
                  {
                      model.Id(d => d.BillId);
                      model.Field(d => d.BillId).Editable(false);
                  })
                  .Events(events =>
                  {
                      events.Error("error_handler");
                      events.Sync("resyncParentGrid");
                  })

    <script>
        function resyncParentGrid(e) {
            var parentData = $('#BillParentsGrid').data("kendoGrid");
            parentData.dataSource.read();
        }
    </script>
@(Html.Kendo().Grid<BillParent>()
    .Name("BillParentsGrid")
    .Columns(columns =>
    {
        columns.Bound(h => h.Category).Width(50);
        columns.Bound(h => h.Description);
        columns.Bound(h => h.Amount).Width(80);
        columns.Command(command =>
        {
            command.Edit();
        })
        .Title("Commands").Width(150);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(h => h.BillId);
            model.Field(h => h.BillId).Editable(false);
        })
        .Events(events => events.Error("error_handler"))
        .Read(read => read.Action("BillParents_Read", "Bill"))
        .Update(update => update.Action("BillParent_Update", "Bill"))
    )
    .Events(events => events.DataBound("dataBound"))
    .ClientDetailTemplateId("BillChildren")

      )

<script id="BillChildren" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<BillChild>()
          .Name("BillChildren_#=BillId#")
          .Columns(columns =>
          {
              columns.Bound(d => d.BillId).Width(50);
              columns.Bound(d => d.Description).Width(150);
              columns.Bound(d => d.Amount).Width(80);
              columns.Command(command =>
              {
                  command.Edit();
                  command.Destroy();
              })
                  .Title("Commands").Width(150);
          })
          .DataSource(dataSource => dataSource
              .Ajax()
              .Model(model =>
              {
                  model.Id(d => d.BillId);
                  model.Field(d => d.BillId).Editable(false);
              })
              .Events(events =>
              {
                  events.Error("error_handler");
                  **events.Sync("resyncParentGrid");**
              })
              .Read(read => read.Action("BillChildren_Read", "Bill", new { id = "#=BillId#" }))
              .Update(update => update.Action("BillChild_Update", "Bill"))
              .Create(create => create.Action("BillChild_Create", "Bill", new { id = "#=BillId#" }))
              .Destroy(destroy => destroy.Action("BillChild_Destroy", "Bill"))
          )
          .ToolBar(tools => tools.Create())
          .ToClientTemplate()
          )
</script>



<script>
    function dataBound() {
        this.expandRow(this.tbody.find("tr.k-master-row").first());
    }

    function resyncParentGrid(e) {
        var parentData = $('#BillParentsGrid').data("kendoGrid");
        parentData.dataSource.read();
    }
</script>
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(d=>d.BillId);
model.Field(d=>d.BillId).可编辑(false);
})
.Events(Events=>
{
错误(“错误处理程序”);
events.Sync(“resyncParentGrid”);
})
函数resyncParentGrid(e){
var parentData=$('BillParentsGrid').data(“kendoGrid”);
parentData.dataSource.read();
}
完整版本

.DataSource(dataSource => dataSource
                  .Ajax()
                  .Model(model =>
                  {
                      model.Id(d => d.BillId);
                      model.Field(d => d.BillId).Editable(false);
                  })
                  .Events(events =>
                  {
                      events.Error("error_handler");
                      events.Sync("resyncParentGrid");
                  })

    <script>
        function resyncParentGrid(e) {
            var parentData = $('#BillParentsGrid').data("kendoGrid");
            parentData.dataSource.read();
        }
    </script>
@(Html.Kendo().Grid<BillParent>()
    .Name("BillParentsGrid")
    .Columns(columns =>
    {
        columns.Bound(h => h.Category).Width(50);
        columns.Bound(h => h.Description);
        columns.Bound(h => h.Amount).Width(80);
        columns.Command(command =>
        {
            command.Edit();
        })
        .Title("Commands").Width(150);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(h => h.BillId);
            model.Field(h => h.BillId).Editable(false);
        })
        .Events(events => events.Error("error_handler"))
        .Read(read => read.Action("BillParents_Read", "Bill"))
        .Update(update => update.Action("BillParent_Update", "Bill"))
    )
    .Events(events => events.DataBound("dataBound"))
    .ClientDetailTemplateId("BillChildren")

      )

<script id="BillChildren" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<BillChild>()
          .Name("BillChildren_#=BillId#")
          .Columns(columns =>
          {
              columns.Bound(d => d.BillId).Width(50);
              columns.Bound(d => d.Description).Width(150);
              columns.Bound(d => d.Amount).Width(80);
              columns.Command(command =>
              {
                  command.Edit();
                  command.Destroy();
              })
                  .Title("Commands").Width(150);
          })
          .DataSource(dataSource => dataSource
              .Ajax()
              .Model(model =>
              {
                  model.Id(d => d.BillId);
                  model.Field(d => d.BillId).Editable(false);
              })
              .Events(events =>
              {
                  events.Error("error_handler");
                  **events.Sync("resyncParentGrid");**
              })
              .Read(read => read.Action("BillChildren_Read", "Bill", new { id = "#=BillId#" }))
              .Update(update => update.Action("BillChild_Update", "Bill"))
              .Create(create => create.Action("BillChild_Create", "Bill", new { id = "#=BillId#" }))
              .Destroy(destroy => destroy.Action("BillChild_Destroy", "Bill"))
          )
          .ToolBar(tools => tools.Create())
          .ToClientTemplate()
          )
</script>



<script>
    function dataBound() {
        this.expandRow(this.tbody.find("tr.k-master-row").first());
    }

    function resyncParentGrid(e) {
        var parentData = $('#BillParentsGrid').data("kendoGrid");
        parentData.dataSource.read();
    }
</script>
@(Html.Kendo().Grid())
.Name(“BillParentsGrid”)
.列(列=>
{
columns.Bound(h=>h.Category).Width(50);
columns.Bound(h=>h.Description);
columns.Bound(h=>h.Amount).Width(80);
columns.Command(Command=>
{
command.Edit();
})
.标题(“命令”)。宽度(150);
})
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(h=>h.BillId);
model.Field(h=>h.BillId).可编辑(false);
})
.Events(Events=>Events.Error(“错误处理程序”))
.Read(Read=>Read.Action(“BillParents\u Read”,“Bill”))
.Update(Update=>Update.Action(“BillParent\u Update”,“Bill”))
)
.Events(Events=>Events.DataBound(“DataBound”))
.ClientDetailTemplateId(“BillChildren”)
)
@(Html.Kendo().Grid())
.Name(“BillChildren#=BillId#”)
.列(列=>
{
columns.Bound(d=>d.BillId).Width(50);
columns.Bound(d=>d.Description).Width(150);
columns.Bound(d=>d.Amount).Width(80);
columns.Command(Command=>
{
command.Edit();
command.Destroy();
})
.标题(“命令”)。宽度(150);
})
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>
{
model.Id(d=>d.BillId);
model.Field(d=>d.BillId).可编辑(false);
})
.Events(Events=>
{
错误(“错误处理程序”);
**events.Sync(“resyncParentGrid”)**
})
.Read(Read=>Read.Action(“BillChildren_Read”,“Bill”,new{id=“#=BillId#”}))
.Update(Update=>Update.Action(“BillChild\u Update”,“Bill”))
.Create(Create=>Create.Action(“BillChild_Create”,“Bill”,new{id=“#=BillId#”}))
.Destroy(Destroy=>Destroy.Action(“BillChild\u Destroy”,“Bill”))
)
.ToolBar(tools=>tools.Create())
.ToClient模板()
)
函数数据绑定(){
this.expandRow(this.tbody.find(“tr.k-master-row”).first());
}
函数resyncParentGrid(e){
var parentData=$('BillParentsGrid').data(“kendoGrid”);
parentData.dataSource.read();
}

我终于破解了它

事件需要在数据源上,使用同步事件,而不是网格本身

短版

.DataSource(dataSource => dataSource
                  .Ajax()
                  .Model(model =>
                  {
                      model.Id(d => d.BillId);
                      model.Field(d => d.BillId).Editable(false);
                  })
                  .Events(events =>
                  {
                      events.Error("error_handler");
                      events.Sync("resyncParentGrid");
                  })

    <script>
        function resyncParentGrid(e) {
            var parentData = $('#BillParentsGrid').data("kendoGrid");
            parentData.dataSource.read();
        }
    </script>
@(Html.Kendo().Grid<BillParent>()
    .Name("BillParentsGrid")
    .Columns(columns =>
    {
        columns.Bound(h => h.Category).Width(50);
        columns.Bound(h => h.Description);
        columns.Bound(h => h.Amount).Width(80);
        columns.Command(command =>
        {
            command.Edit();
        })
        .Title("Commands").Width(150);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(h => h.BillId);
            model.Field(h => h.BillId).Editable(false);
        })
        .Events(events => events.Error("error_handler"))
        .Read(read => read.Action("BillParents_Read", "Bill"))
        .Update(update => update.Action("BillParent_Update", "Bill"))
    )
    .Events(events => events.DataBound("dataBound"))
    .ClientDetailTemplateId("BillChildren")

      )

<script id="BillChildren" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<BillChild>()
          .Name("BillChildren_#=BillId#")
          .Columns(columns =>
          {
              columns.Bound(d => d.BillId).Width(50);
              columns.Bound(d => d.Description).Width(150);
              columns.Bound(d => d.Amount).Width(80);
              columns.Command(command =>
              {
                  command.Edit();
                  command.Destroy();
              })
                  .Title("Commands").Width(150);
          })
          .DataSource(dataSource => dataSource
              .Ajax()
              .Model(model =>
              {
                  model.Id(d => d.BillId);
                  model.Field(d => d.BillId).Editable(false);
              })
              .Events(events =>
              {
                  events.Error("error_handler");
                  **events.Sync("resyncParentGrid");**
              })
              .Read(read => read.Action("BillChildren_Read", "Bill", new { id = "#=BillId#" }))
              .Update(update => update.Action("BillChild_Update", "Bill"))
              .Create(create => create.Action("BillChild_Create", "Bill", new { id = "#=BillId#" }))
              .Destroy(destroy => destroy.Action("BillChild_Destroy", "Bill"))
          )
          .ToolBar(tools => tools.Create())
          .ToClientTemplate()
          )
</script>



<script>
    function dataBound() {
        this.expandRow(this.tbody.find("tr.k-master-row").first());
    }

    function resyncParentGrid(e) {
        var parentData = $('#BillParentsGrid').data("kendoGrid");
        parentData.dataSource.read();
    }
</script>
.DataSource(DataSource=>DataSource
.Ajax()