На моей странице default.aspx у меня есть некоторые инструменты ESRI (и некоторые команды) на панели инструментов, что-то вроде этого.Почему мои ESRI: объекты инструмента, у которых их изображения сброшены, когда я выбираю любой другой инструмент на странице?
<ToolbarItems>
<esri:Tool ClientAction="MapPoint('Map1','%toolbarItem%',false,'crosshair') DefaultImage="~/images/default_tool.gif"
EnablePostBack="True" JavaScriptFile="" Name="TestTool" SelectedImage="~/images/selected_tool.gif" DisabledImage="~/images/disabled_tool.gif"
ServerActionAssembly="Test.Web.Mapping" ServerActionClass="Test.Web.Mapping.TestTool"
Text="It's a tool!" ToolTip="Use it." />
</ToolbarItems>
Теперь у меня есть код, который используется для отключения инструмента, эффективно меняющего его образ. Код в основном перебирает панель инструментов, чтобы найти инструмент, который необходимо отключить, и делает это.
После запуска кода все работает красиво. Правильный инструмент отключен, и изображение изменилось соответствующим образом.
Проблема в том, что если я выбираю, скажем, инструмент увеличения, то изображение для инструмента, которое я только что отключил, сразу же возвращается к изображению по умолчанию.
Похоже, что должен быть какой-то блок Javascript, работающий где-то, который сбрасывает состояние всех инструментов там, по умолчанию, как определено на странице Default.aspx. Однако у меня проблемы с поиском. Есть идеи?
EDIT: код для отключения кнопки является C# код, который что-то вроде следующего ...
foreach (InteractiveImageToolbarItem toolbarTool in toolbar.ToolbarItems)
{
// First check to see if the dictionary even contains the tool, if not we assume the tool is enabled for all themes, so enable it and
// move to the next iteration.
if (!enabledTools.Keys.Contains(toolbarTool.Name))
{
toolbarTool.Disabled = false;
continue;
}
// So the tool is in the list, this loop checks to see if the tool is enabled for the current theme, meaning the theme is in the list
// associated with the tool.
foreach (string themeFromConfig in enabledTools[toolbarTool.Name])
{
if (currentTheme != themeFromConfig)
{
toolbarTool.Disabled = true;
}
else
{
toolbarTool.Disabled = false;
break;
}
}
}
Он может видеть то, что должно быть включено, смотря на значениях конфигурации. Еще раз отметим, что эта часть отлично работает.
Обновление 9.09.09: Итак, я думаю, что знаю, в чем проблема. В Web ADF метод, который вызывается, ToolbarMouseDown, имеет вызов в конце этого ...
Toolbars[toolbarName].refreshGroup();
Если инструмент щелкнуло в любой панели инструментов, которая является частью той же группы, моей панели инструментов изображение будет сброшено. Я не уверен, что получаю за собой логику, это делает невозможным отключить инструменты или изменить их изображения и сохранить их. Что бы ни ...
В любом случае, это все на стороне JavaScript, есть ли способ, который я могу сказать, когда этот вызов refreshGroup был создан или что-то еще? Я думаю, что должно произойти, когда изображение сбрасывается, чтобы быть включенным. Мне нужно немедленно вернуть его обратно к отключению.
Re: «У меня есть код». Вы имеете в виду код JavaScript или код C#, который отключает кнопку? –
C# код, спецификация, опубликованная выше. – Carter