2011-11-23 7 views
0

処理中にASP.NETページのコントロールを無効にしようとしています。この目的のために私はhereからDOMツリーを実行し、すべての子コントロールを無効にして解決策を採用しました。これは私が使用不可にしようとしています画面の部分の多くは正常に動作しますが、いくつかのテーブルフルコントロールのを無効にしようとすると、次のエラーが発生します - このコントロールを無効にすると奇妙なエラーが発生する

Server Error in '/' Application. 
-------------------------------------------------------------------------------- 

Input string was not in a correct format. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.FormatException: Input string was not in a correct format. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 

[FormatException: Input string was not in a correct format.] 
    System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +7471479 
    System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt) +115 
    System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info) +192 
    System.Double.Parse(String s, IFormatProvider provider) +25 
    ComponentArt.Web.UI.NumberInput.set_Value(Nullable`1 value) +81 
    ComponentArt.Web.UI.NumberInput.LoadViewState(Object savedState) +255 
    System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +183 
    System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 
    System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 
    System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 
    System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 
    System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 
    System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 
    System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 
    System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 
    System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState) +134 
    System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +221 
    System.Web.UI.Page.LoadAllState() +312 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1661 




-------------------------------------------------------------------------------- 
Version Information: Microsoft .NET Framework Version:2.0.50727.3625; ASP.NET Version:2.0.50727.3618 

なしので、アプリケーションコードでIではありませんそれについて何をすべきかわからない。誰もが問題の原因を突き止める方法について知っていますか、どこから探し始めるべきですか?

また、コントロールのグループを無効にするより良い方法がありますか?

コントロールを無効にする方法、パネルを作成して有効にする方法をfalseに設定する方法も試しましたが、何もしていないようです。

EDIT:要求されたとして、ここではJavascriptがコントロールを無効にするために意図されていることである。

function disableChildElements(objId) 
    { 
     var theObject = document.getElementById(objId); 
     var level = 0; 
     TraverseDOM(theObject, level, disableElement); 
    } 

    function TraverseDOM(obj, lvl, actionFunc) 
    { 
     for (var i=0; i<obj.childNodes.length; i++) 
     { 
      var childObj = obj.childNodes[i]; 

      if (childObj.tagName) 
      { 
        actionFunc(childObj); 
      } 

      TraverseDOM(childObj, lvl + 1, actionFunc); 
     } 

    } 

    function disableElement(obj) 
    { 
     obj.disabled = true; 
    } 

    function DisableControls() 
    { 
     disableChildElements(castVariablesTable.id); 
     disableChildElements(oldGradeTable.id); 
     oldGradePanel.enabled=false; 
    } 

DisableControls関数の最初の行が正常に動作します。 2番目にエラーが発生します。代替メソッドを試すために2行目を3行目に置き換えることは何もしません。

ASPでのキャスト変数テーブルはこのように始まり...

<table id="castVariablesTable" class="normalTable"> 
    <tr> 
     <td> 
      <label class="normalText">Number of strands</label> 
     </td> 
     <td> 
      <span class="normalInput"> 
       <MixedZone:NumberInput runat="server" 
             ID="niNumberOfStrands" 
             MaxLength="1" 
             Step="1" 
             Increment="1" 
             MaxValue="6" 
             MinValue="1" 
             NumberType="Number" 
             DecimalDigits="0"> 
       </MixedZone:NumberInput> 
      </span> 

のように。

問題の原因となるテーブルは大きすぎるため、ここに入れることはできますが、同じ種類のものが含まれています。私は難しさを引き起こす特定のコントロールを実行することができませんでした。

+0

あなたのアプリケーションコードのいくつかを見ることができますか? –

+0

ポストバック中にViewStateを取得できないようです。 ViewStateを含む非表示の入力に影響を与える可能性はありますか? – danyloid

+0

@ DanielCasserly、ありがとう、私はJavascriptとASPのスニペットを追加しました。 –

答えて

0

さらに詳しい調査の結果、値が定義されていないComponentArt:NumberInputコントロールを無効にするためにJavascriptを使用しようとすると、このエラーが発生することが判明しました。

投稿する前にページのすべてのComponentArt:NumberInputコントロールの値を設定すると、エラーが解決します。