【问题标题】:Passing variable from controller to Devexpress GridView Column EndCallBack JS将变量从控制器传递到 Devexpress GridView 列 EndCallBack JS
【发布时间】:2015-02-05 14:40:44
【问题描述】:

我给出了一个代表地址的 Devexpress GridView。两个级联组合框(Governorate-Area)。当用户选择一个省时,区域组合将根据所追逐的省进行过滤。当用户不知道该地区对应的省时,他只需从选择地区开始,省组合框将填充正确的省。

在 index.chtml 中

<script type="text/javascript">
function governorateCombo_SelectedIndexChanged(s, e) {
    areaCode.PerformCallback();
}
function AreaCombo_BeginCallback(s, e) {
    e.customArgs['governorateCode'] = governorateCode.GetValue();
}

function areaCombo_SelectedIndexChanged(s, e) {
    governorateCode.PerformCallback();
}
function GovernorateCombo_BeginCallback(s, e) {
    e.customArgs['areaCode'] = areaCode.GetValue();
}

function GovernorateCombo_EndCallback(s, e) {
    benGeoGridView.Refresh();
    var bla = '@Session["governorateCode"]';
    var item = s.FindItemByValue(bla);
    s.SetSelectedItem(item);
}

ComboboxGovernoratePartial.chtml

@Html.DevExpress().ComboBox(settings =>
{
settings.CallbackRouteValues = new { Controller = "benFile", Action = "ComboBoxGovernoratePartial" };
settings.Name = "governorateCode";
settings.Properties.TextField = "governorateName1";
settings.Properties.ValueField = "governorateCode";
settings.Properties.ValueType = typeof(string);
settings.Width = 220;
settings.Properties.EnableSynchronization = DefaultBoolean.False;
settings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.StartsWith;
if (Thread.CurrentThread.CurrentCulture.Name.Substring(0, 2) == "ar")
{
    settings.RightToLeft = DefaultBoolean.True;
}
settings.Properties.ClientSideEvents.BeginCallback = "GovernorateCombo_BeginCallback";
settings.Properties.ClientSideEvents.SelectedIndexChanged = "governorateCombo_SelectedIndexChanged";
settings.Properties.ClientSideEvents.EndCallback = "GovernorateCombo_EndCallback";
}).BindList(Model).Bind(ViewData["governorateCode"]).GetHtml()

在控制器中:

 public ActionResult ComboBoxGovernoratePartial()
    {
        string areaCode = (Request.Params["areaCode"] != null) ? Request.Params["areaCode"] : "-1";

        List<governorateName> governorateNames = new List<governorateName>();

            governorateMaster governorateMaster = new governorateMaster();

            if (areaCode != null)
            {
                Session["governorateCode"] = Masters.areaMasters.First(a => a.areaCode == areaCode).governorateCode; ;
                ViewData["governorateCode"] = Masters.areaMasters.First(a => a.areaCode == areaCode).governorateCode;
                governorateNames = Masters.governorateNames.Where(a => a.langCode.ToLower() == Thread.CurrentThread.CurrentCulture.Name.Substring(0, 2)).ToList();
            }
       return PartialView(governorateNames.ToList());
    }

当用户选择区域时,(在 js 中)我为省组合框调用执行回调,控制器选择正确的省以填充到省组合框中。问题是,当我在 ViewData 中发送省级代码时,它始终为空。在 Session 变量中,它的值是页面加载时的值,而不是控制器中更新的值。

有什么建议吗?

对不起,各位

【问题讨论】:

  • 为什么不直接联系 DevExpress 支持渠道?

标签: c# javascript asp.net-mvc devexpress


【解决方案1】:

为此,您可以尝试:

TempData["yourVar"]

【讨论】:

  • 欢迎来到 Stack Overflow!请edit 解释一下为什么这是一个好的答案?
猜你喜欢
  • 1970-01-01
  • 2012-02-10
  • 2016-01-11
  • 2017-05-28
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多