我在更改数量值后尝试单击表单上的按钮时出现以下错误。正确设置密钥和数量(我在调试期间可以看到)。
我不知道为什么我会收到错误....
The value "1" is not of type "System.Int32" and cannot be used in this generic collection.
Parameter name: value
我在网上查了这条消息,但我读过的内容都没有解读错误。
我将字典对象设置如下。请注意,我尝试将类型更改为字符串,字符串,并显示相同的消息(上图),而不是"System.Int32"
,"System.String"
。
PageData["ClientSelectedQtyRows"] = new Dictionary<string, Int32>();
这是我在屏幕上更改数量值时触发的JS:
function UpdateQtySelection(key, qty) {
if (key) {
var dict = PageDataClient.Get("ClientSelectedQtyRows");
dict[key] = qty;
PageDataClient.Set("ClientSelectedQtyRows", dict);
}
}
在调试期间,字典对象在更改数量后包含正确的值。
?dict[key]
1
?PageDataClient.Get("ClientSelectedQtyRows")
{...}
[prototype]: {...}
[41769]: 1
[prototype]: []
“打印”按钮的标记如下:
<td style="padding-right: 10px;">
<dx:ASPxButton ID="btnPrint" Text="Print" runat="server" ClientInstanceName="btnPrintClient" CausesValidation="false" ValidationGroup="CS" Theme="PlasticBlue" AutoPostBack="false" Enabled="false">
<ClientSideEvents Click="function (s,e) { PerformCallback('1:'); btnPrintClient.disabled = true; btnSearchClient.disabled = true; }" />
</dx:ASPxButton>
</td>
答案 0 :(得分:0)
由于ASPXHiddenField不支持字典对象中的整数,因此我将其变为。
在JS功能期间,我错过了一件事。
我改变了以下值:
dict [key] = parseInt(qty,10);
到
dict [key] = qty.toString();
这解决了这个问题...