首页 > 解决方案 > 如何在窗口中加载剑道网格并为参数值使用隐藏字段

问题描述

我有一个加载代理网格的 index.cshtml。单击网格中的自定义按钮会打开一个窗口并在部分视图中为所选代理加载 BillingRates 网格。我从 Agencies 网格中读取了两个参数,并希望将它们用于 BillingRates 网格的数据源参数。

最好的方法是什么?我在 index.cshtml 上有两个隐藏字段,用于存储我从 Agencies 网格中读取的两个参数。一个 javascript 警报告诉我值是正确的,但是隐藏的字段出现“未定义”,尽管它们在那里并且它们的值被发布——我将字段更改为文本框而不是隐藏来证明这一点。

这是我的代码:index.cshtml 上的隐藏字段(在此处显示文本以进行测试)

<input type="text" value="" name="pidForBillingRates" />
<input type="text" value="" name="aidForBillingRates" />

自定义按钮点击事件:

function ShowManageBillingRatesWindow_Click(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var pid = dataItem.Provider;
var aid = dataItem.AgencyId;
$("#pidForBillingRates").val(pid);
$("#aidForBillingRates").val(aid);
alert("pidForBillingRates = " + $("#pidForBillingRates"));
alert("pidForBillingRates.val() = " +     
$("#pidForBillingRates").attr('value'));
alert("aidForBillingRates.val() = " +
$("#aidForBillingRates").attr('value'));
alert("pid = " + pid + " and aid = " + aid);

$('#manageBillingRatesWindow').load('@Url.Action("AgencyBillingRateView",    
"AgencyBillingRate")' + "?providerId=" + pid + "&agencyId=" + aid);
var window = $("#manageBillingRatesWindow").data("kendoWindow");
window.center().open();
}

第一个警报:

alert("pidForBillingRates = " + $("#pidForBillingRates"));

返回: {object object} 所以我知道它找到了文本框。

第二个警报:

alert("pidForBillingRates.val() = " +     
$("#pidForBillingRates").attr('value'));

返回“无法读取未定义的值”。

第三个警报:

alert("aidForBillingRates.val() = " +
$("#aidForBillingRates").attr('value'));

返回“无法读取未定义的值”。

第四次警报"

alert("pid = " + pid + " and aid = " + aid);

返回 pid 和aid 的正确值。

我尝试将隐藏字段(用于测试的文本框字段)放在 index.cshtml 上,然后放在 BillingRates 部分视图上,但仍然得到相同的未定义消息。

所以网格不会加载任何数据,因为它没有在它使用的过滤器中检索两个必要的参数。

我该如何解决?

标签: .net-corekendo-grid

解决方案


我怀疑“它找到了文本框” pidForBillingRates。井号告诉 jQuery 搜索 id 为“pidForBillingRates”的元素。您想要的是搜索具有属性name和属性值“pidForBillingRates”的元素。所以$("input[name='pidForBillingRates']")应该给你正确的元素。

有关 jQuery 中所有支持的选择器,请参阅https://api.jquery.com/category/selectors/


推荐阅读