【发布时间】:2017-07-24 12:01:42
【问题描述】:
我对 ASP.Net 和客户端与服务器之间通信的概念还比较陌生。我正在使用 DevExpress 工具,但我相信这个问题更多的是对这个概念的误解。
我在通过 Action @Html.Action('MessageGridView') 加载的局部视图中有一个 GridView。这没有问题,并且可以使用索引和返回的模型很好地加载数据。
@Html.DevExpress().GridView(settings =>
{
settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
settings.Name = "preparedMessagesGrid";
settings.CallbackRouteValues = new { Controller = "Messages", Action = "MessagesGridView" };
settings.KeyFieldName = "Id";
settings.SettingsBehavior.AllowSelectByRowClick = true;
settings.SettingsBehavior.AllowSelectSingleRowOnly = true;
settings.ClientSideEvents.Init = "GridViewInit";
settings.ClientSideEvents.SelectionChanged = "OnSelectionChanged";
settings.ClientSideEvents.BeginCallback = "OnBeginCallback";
settings.SettingsBehavior.AllowEllipsisInText = true;
settings.PreRender = settings.Init = (sender, e) =>
{
MVCxGridView gridView = sender as MVCxGridView;
gridView.Selection.SelectAll();
};
settings.Columns.Add("Name");
settings.Columns.Add("Description");
}).Bind(Model.preparedMessages).GetHtml()
我想要实现的是当用户选择我希望在单击时将数据加载到弹出控件中的行时。有没有办法为弹出控件回调动态设置参数?
@Html.DevExpress().PopupControl(settings =>
{
settings.Name = "pcModalMode";
settings.Width = 100;
settings.AllowDragging = true;
settings.CloseAction = CloseAction.CloseButton;
settings.CloseOnEscape = true;
settings.PopupAnimationType = AnimationType.None;
settings.HeaderText = "Login";
settings.Modal = true;
settings.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter;
settings.PopupVerticalAlign = PopupVerticalAlign.WindowCenter;
settings.CallbackRouteValues = new { Controller = "Messages", Action = "Load", new { id = THIS NEEDS TO BE SELECTED ID VALUE} };
settings.LoadContentViaCallback = LoadContentViaCallback.OnFirstShow;
}).GetHtml()
如果我将值设置为静态,它就可以工作,所以我离让它工作只有一步之遥。我研究的是,我可以使用 selection changed 事件从 javascript 中的 GridView 获取值。
function OnSelectionChanged(s, e) {
s.GetSelectedFieldValues("Id", GetSelectedFieldValueCallback);
}
然后我可以检索这个值,但是我可以将它设置为我的弹出控件还是我误解了它相对较新,并且可能我可以在执行 ViewGrid 回调时执行此服务器端,然后将其设置为服务器端某种形式的会议?
【问题讨论】:
-
我认为你需要像
settings.CallbackRouteValues = new { Controller = "Messages", Action = "Load", id = Request.Params["id"] }这样的东西。Request.Params["id"]参数通过customArgs从弹出的回调中加载,该回调从 GridView 的SelectionChanged事件中检索。 -
@TetsuyaYamamoto 谢谢你说的有道理,我会试一试,让你知道我的进展情况
标签: javascript c# asp.net asp.net-mvc devexpress