Salutations!Impossible de renoncer au contrôle FormView lors de la publication
I ont une DropDownList dans un FormView qui sont liés à XmlDataSources:
<asp:FormView ID="MyFormView" runat="server" DataSourceID="MyXmlDataSource">
<ItemTemplate>
<h1><%# XPath("SomeNode")%></h1>
<asp:Label ID="MyLabel" runat="server" AssociatedControlID="MyDdl" Text='<%# XPath("SomeOtherNode")%>' />
<asp:DropDownList ID="MyDdl"
runat="server"
DataSourceID="MyDdlDataSource"
DataTextField="name"
DataValueField="value"
AutoPostBack="true"
OnSelectedIndexChanged="MyDdl_SelectedIndexChanged">
</asp:DropDownList>
</ItemTemplate>
</asp:FormView>
<asp:XmlDataSource ID="MyXmlDataSource" runat="server" XPath="Root/MainSection" />
<asp:XmlDataSource ID="MyDdlDataSource" runat="server" XPath="Root/MainSection/Areas/*" />
Dans le codebehind de la page, je la méthode OnLoad() suivant, ainsi que la méthode pour obtenir la valeur sélectionnée dropdownlist pendant postback :
private m_key;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
string xml_data;
if (!IsPostBack)
{
xml_data = GetMyXml(0); // default value
MyXmlDataSource.Data = xml_data;
MyDdlDataSource.Data = xml_data;
}
else
{
GetSelections();
xml_data = GetMyXml(m_key);
MyXmlDataSource.Data = xml_data;
MyXmlDataSource.DataBind();
}
}
private void GetSelections()
{
DropDownList l_MyDdl = FindMyControl<DropDownList>("MyDdl");
if (l_MyDdl != null)
if (!Int32.TryParse(l_MyDdl.SelectedItem.Value, out m_key))
m_key = 0;
}
Tout fonctionne très bien, jusqu'à ce qu'une publication soit effectuée suite à la modification de la liste déroulante. Lorsque cela se produit, j'obtiens la valeur de l'élément sélectionné dans la liste déroulante, je la passe à ma méthode GetMyXml() avec la valeur de la liste déroulante en tant que paramètre, puis définissons la source de données FormView aux données XML récemment retournées depuis GetMyXml (). J'ai regardé la valeur de "xml_data" pendant la publication et c'est vraiment correct. Cependant, les valeurs affichées sur la page FormView (comme XPath ("SomeNode")) sont les valeurs d'avant la publication et non celles renvoyées dans xml_data. Pourquoi cela se produirait-il et comment ferais-je pour le résoudre? Merci d'avance.
Pour une raison quelconque, j'obtiens une exception de référence nulle lorsque j'essaie cela. Pourquoi cela serait-il? – Bullines
Je ne suis pas vraiment sûr, vous devriez mettre à jour la question pour refléter cela. Quelqu'un pourrait avoir une réponse. – sirrocco