Asp.net mvc 如何在ASP.NETMVC中存储Telerik网格中的值?
我在ASP.Net MVC中使用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
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;
}