Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net mvc 如何在ASP.NETMVC中存储Telerik网格中的值?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 如何在ASP.NETMVC中存储Telerik网格中的值?

Asp.net mvc 如何在ASP.NETMVC中存储Telerik网格中的值?,asp.net-mvc,Asp.net Mvc,我在ASP.Net MVC中使用Telerik grid,我想在ViewBag/Session中存储“Key”,并将其传递给控制器,“Key”与Telerik grid的列绑定。 我怎样才能做到呢 @(Html.Telerik().Grid()) .名称(“网格”) .Columns(Columns=> { columns.Bound(e=>e.Key).Width(140); }) .ClientEvents(events=>events.OnRowDataBound(“OnRowDataBo

我在ASP.Net MVC中使用
Telerik grid
,我想在
ViewBag/Session
中存储“Key”,并将其传递给控制器,“Key”与
Telerik grid
的列绑定。 我怎样才能做到呢

@(Html.Telerik().Grid()) .名称(“网格”)

.Columns(Columns=>
{
columns.Bound(e=>e.Key).Width(140);
})
.ClientEvents(events=>events.OnRowDataBound(“OnRowDataBound”))
.DetailView(details=>details.ClientTemplate(
Html.Telerik().TabStrip()
.Name(“TabStrip_”)
.已选择索引(0)
.项目(项目=>
{
items.Add().Text(“解析”).Content(
Html.Telerik().Grid()
.名称(“决议”)
.列(列=>
{
columns.Bound(f=>f.CreatedDate).宽度(140).标题(“日期”);
columns.Bound(f=>f.Name).Title(“Name”);
})
.DataBinding(DataBinding=>DataBinding.Ajax()
.选择(“MyControlleration2”、“MyController”,每次在此处传递)
//这里不是每次都在这里传递密钥,我需要“密钥”来传递FirstModel的密钥
.Pageable()
.Sortable()
.可过滤()
.Scrollable()
.ToHtmlString()
);
})
.ToHtmlString()
))
.DataBinding(DataBinding=>DataBinding.Ajax().Select(“MyControllerAction1”、“MyController”))
.Pageable()
.可滚动(滚动=>滚动高度(500))
.Sortable()
)
每次绑定时要调用的控制器

    public ActionResult MyControllerAction2(string myKey)
        {
            var test = new List<Data>();
            ProjectDetail projectDetail = new ProjectDetail();
            test = projectDetail.GetData("KEY-123");
            // Actually I want to use Key here which is passed in View at DataBinding(),
                so that I can get all data I need
            return View(new GridModel(test));
        }
public ActionResult mycontrolleration2(字符串myKey)
{
var test=新列表();
ProjectDetail ProjectDetail=新的ProjectDetail();
测试=projectDetail.GetData(“KEY-123”);
//实际上,我想在这里使用在DataBinding()的视图中传递的键,
这样我就可以得到我需要的所有数据
返回视图(新网格模型(测试));
}

您可以在
OnRowDataBound(e)
javascript函数中获得此值:

function onRowDatabound(e) {
    var currentKey = e.dataItem.Key;
    //send currentKey to controller 
}
更新:

如果您有master:detail,则可以使用next:

.DetailView(details => details.ClientTemplate("<div style='float:left' class='e-function-grid-detail' data-Key='<#= Key #>'>" +
                Html.Telerik().TabStrip()
                    .Name("TabStrip_<#= Key #>")
                    .SelectedIndex(0)
                    .Items(items =>
                    {
                        items.Add().Text("Resolution").Content(
                                Html.Telerik().Grid<AnotherModel>()
                                    .Name("Resolutions_<#= Key #>")
                                    .Columns(columns =>
                                    {
                                        columns.Bound(f => f.CreatedDate).Width(140).Title("Date");
                                        columns.Bound(f => f.Name).Title("Name");                                      
                                    })
                                    .DataBinding(dataBinding => dataBinding.Ajax()
                                        .Select("MyControllerAction2", "MyController"))
                                    .Pageable()
                                    .Sortable()
                                    .Filterable()
                                    .Scrollable()
                                    .ClientEvents(ce => ce.OnDataBinding("function(e){ addKeyToRequest(this, e);}")
                                    .ToHtmlString()
                                    );

                    })
                    .ToHtmlString()
        )) + "</div>"

在将数据发送到控制器之前调用此函数,并将您的键值添加到post。

当您要将此数据发送到控制器时,什么是Scenetion?是否要发送网格中选定行的键的当前值?是的,每次在列中,我都要向控制器发送“键”。是否可以使用javascript函数发送?从
.ClientEvents(events=>events.OnRowDataBound(“OnRowDataBound”))
感谢Kirill Bestemyanov,它提供了所有密钥”,但我忘了在另一个子网格中提到我需要它。
.DetailView(details => details.ClientTemplate("<div style='float:left' class='e-function-grid-detail' data-Key='<#= Key #>'>" +
                Html.Telerik().TabStrip()
                    .Name("TabStrip_<#= Key #>")
                    .SelectedIndex(0)
                    .Items(items =>
                    {
                        items.Add().Text("Resolution").Content(
                                Html.Telerik().Grid<AnotherModel>()
                                    .Name("Resolutions_<#= Key #>")
                                    .Columns(columns =>
                                    {
                                        columns.Bound(f => f.CreatedDate).Width(140).Title("Date");
                                        columns.Bound(f => f.Name).Title("Name");                                      
                                    })
                                    .DataBinding(dataBinding => dataBinding.Ajax()
                                        .Select("MyControllerAction2", "MyController"))
                                    .Pageable()
                                    .Sortable()
                                    .Filterable()
                                    .Scrollable()
                                    .ClientEvents(ce => ce.OnDataBinding("function(e){ addKeyToRequest(this, e);}")
                                    .ToHtmlString()
                                    );

                    })
                    .ToHtmlString()
        )) + "</div>"
function addKeyToRequest(sender, e) {
        var key= $(sender).closest('div.e-function-grid-detail').data("Key");
        if (e.data == null || e.data == '') {
            e.data = new Object();
        }
        e.data.Key = key;
    }