Я столкнулся с проблемой, которую затрудняюсь понять и / или обойти.
Я работаю над страницей настроек, которая обновляет файл XML. На странице есть XmlDataSource с файлом преобразования (для фильтрации и сортировки значений) и DataList, который заполняется из XmlDataSource. Пользователь может ввести имя новой группы в текстовое поле и нажать кнопку, чтобы отправить форму. Когда это происходит, новое значение успешно добавляется в файл XML.
Итак, у меня простая ситуация: опубликовать форму и обновить источник данных. Конечно, я также хотел бы, чтобы DataList показывал новую добавленную стоимость, но мне, кажется, там не повезло. Новое значение не появляется сразу. Если я немедленно введу другое значение и отправлю форму, то значение, которое я ввел ранее, будет отображаться. По сути, я на шаг отстаю каждый раз при отправке формы.
Вот разметка:
<asp:DataList ID="list_groups" runat="server" DataSourceID="siteConfig_supportGroups"
CellSpacing="0" EnableViewState="False">
<ItemTemplate>
<div style="margin-bottom:12px;">
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/del.png"
CommandArgument='<%#Eval("name") %>' style="float:left; margin-right:6px;" />
<%#Eval("name")%>
</div>
</ItemTemplate>
</asp:DataList>
New: <asp:TextBox ID="txt_new_group" runat="server"></asp:TextBox>
<asp:Button ID="btn_new_group" runat="server" Text="Add" />
<asp:XmlDataSource ID="siteConfig_supportGroups" runat="server"
DataFile="~/presets.xml" EnableViewState="False" EnableCaching="False"
TransformFile="supportGroups.xslt"></asp:XmlDataSource>
И код, содержащийся в обработчике событий для нажатия кнопки:
Dim presets As New XmlDocument
presets.Load(Server.MapPath("presets.xml"))
Dim newNode As XmlNode = presets.CreateNode(XmlNodeType.Element, "group", Nothing)
Dim nodeName As XmlAttribute = presets.CreateAttribute("name")
nodeName.Value = txt_new_group.Text
newNode.Attributes.Append(nodeName)
Dim test As XmlNode = presets.SelectSingleNode("settings/supportGroups")
test.AppendChild(newNode)
presets.Save(Server.MapPath("presets.xml"))
Что касается жизненного цикла страницы и привязки данных, я не знаю никаких проблем с этой настройкой. Насколько я понимаю, привязка данных происходит во время или после события prerender, которое определенно происходит после кода выше. Это наводит меня на мысль, что с самим файлом xml может происходить что-то необычное. Возможно, он прочитан элементом управления XmlDataSource до того, как мой код сможет обновить и сохранить его?
Большая часть поисков, о которых я говорил, упоминается с помощью метода getXmlDocument () XmlDataSource, который возвращает xmlDocument, который можно редактировать и сохранять с помощью метода save () XmlDataSource. Однако я получаю сообщение об ошибке, в котором говорится, что метод сохранения не может быть использован, пока указан файл преобразования. Мне нужен файл преобразования, чтобы отсортировать параметры для пользователя. Все остальное упоминает атрибуты enableviewstate и enablecaching, которые также не решают проблему.
Буду весьма признателен за любые идеи или предложения по обходному пути.