Я пытаюсь отключить элементы управления на странице ASP.NET во время обработки. С этой целью я принял решение из здесь , запустив дерево 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
Ничего из этого нет в коде приложения, поэтому я не знаю, что с этим делать. Кто-нибудь знает, как найти причину проблемы или где мне начать искать?
В качестве альтернативы, есть ли лучший способ отключить группы элементов управления?
Я также попробовал метод, предложенный здесь для отключения элементов управления, создав панель и включив параметр false
, но, похоже, это ничего не делает.
РЕДАКТИРОВАТЬ: по запросу, вот 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
работает нормально; вторая вызывает ошибку. Замена второй строки третьей строкой, чтобы попробовать альтернативный метод, ничего не делает.
Таблица приведенных переменных в 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>
и т. Д.
Таблица, которая вызывает проблему, слишком велика, чтобы помещать ее здесь, но содержит такие же вещи; Я не смог запустить конкретный контроль, вызывающий трудности.