gpt4 book ai didi

c# - 将变量从 Controller 传递到 Devexpress GridView 列 EndCallBack JS

转载 作者:行者123 更新时间:2023-11-28 08:42:21 26 4
gpt4 key购买 nike

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

在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()

在 Controller 中:

 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 中)我为省组合框调用执行回调, Controller 会选择正确的省以填充到省组合框中。问题是,当我在 ViewData 中发送省代码时,它始终为空。在 session 变量中,它的值是页面加载时的值,而不是 Controller 中更新的值。

有什么建议吗?

抱歉占用了大家的时间

最佳答案

为此,您可以尝试:

TempData["yourVar"]

关于c# - 将变量从 Controller 传递到 Devexpress GridView 列 EndCallBack JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20347475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com