1. 程式人生 > >在IE10中點選updatepanel裡面的imagebutton時出現的錯誤:輸入字串的格式不正確( 在 System.Number.StringToNumber)

在IE10中點選updatepanel裡面的imagebutton時出現的錯誤:輸入字串的格式不正確( 在 System.Number.StringToNumber)

問題描述:在IE10中點選updatepanel裡面的imagebutton時出現“輸入字串的格式不正確”錯誤,在其它瀏覽器以及IE7/8/9無此問題

異常訊息:

輸入字串的格式不正確。

在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 在 System.Web.UI.WebControls.ImageButton.LoadPostData(String postDataKey, NameValueCollection postCollection) 在 System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

在vs中除錯時會出現javascript執行時錯誤:

Sys.WebForms.PageRequestManagerServerErrorException: Input string was not in a correct format.

updatepanel中包含一個grid控制元件和一個分頁控制元件,在點選分頁按鈕時出現此問題,程式碼如下:
    <asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:DexGrid ID="myGrid" runat="server">
            </asp:DexGrid>
            <asp:DexPagerBar ID="myPager" runat="server" OwnerControlID="myGrid">
            </asp:DexPagerBar>
        </ContentTemplate>
        <Triggers>
        </Triggers>
    </asp:UpdatePanel>

解決方法:在所屬頁面或所在模板頁中加入如下指令碼即可解決

    <script type="text/javascript">
        //為解決在IE10中點選updatepanel裡面的imagebutton時出現的錯誤
        Sys.WebForms.PageRequestManager.getInstance()._origOnFormActiveElement = Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive;
        Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive = function(element, offsetX, offsetY) {
            if (element.tagName.toUpperCase() === 'INPUT' && element.type === 'image') {
                offsetX = Math.floor(offsetX);
                offsetY = Math.floor(offsetY);
            }
            this._origOnFormActiveElement(element, offsetX, offsetY);
        };
    </script>