用字典对象键入错误

时间:2013-09-06 14:58:07

标签: c# javascript jquery dictionary devexpress

我在更改数量值后尝试单击表单上的按钮时出现以下错误。正确设置密钥和数量(我在调试期间可以看到)。

我不知道为什么我会收到错误....

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>

1 个答案:

答案 0 :(得分:0)

由于ASPXHiddenField不支持字典对象中的整数,因此我将其变为。

在JS功能期间,我错过了一件事。

我改变了以下值:

dict [key] = parseInt(qty,10);

dict [key] = qty.toString();

这解决了这个问题...