Mon formulaire Web de test comporte 1 dropdownlist
et 2 buttons
. Voici:Page.EnableEventValidation = false ne reconnaît pas les nouvelles valeurs de liste déroulante
<form id="form1" runat="server">
<asp:DropDownList ID="DropDownListTest" runat="server" >
<asp:ListItem>Value 0</asp:ListItem>
<asp:ListItem>Value 1</asp:ListItem>
<asp:ListItem>Value 2</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="ButtonClient" runat="server" Text="Button" OnClientClick="ChangeDropDown(); return false;" />
<asp:Button ID="ButtonServer" runat="server" Text="Server" onclick="ButtonServer_Click" />
</form>
C'est la fonction javascript
ChangeDropDown()
:
function ChangeDropDown() {
for (i = document.getElementById("<%=DropDownListTest.ClientID%>").options.length - 1; i >= 0; i--) {
document.getElementById("<%=DropDownListTest.ClientID%>").remove(i);
}
var opt = document.createElement("option");
opt.text = "Complete";
opt.value = "Complete";
document.getElementById("<%=DropDownListTest.ClientID%>").options.add(opt);
var opt2 = document.createElement("option");
opt2.text = "Not Complete";
opt2.value = "Not Complete";
document.getElementById("<%=DropDownListTest.ClientID%>").options.add(opt2);
}
Et c'est le codebehind:
protected void ButtonServer_Click(object sender, EventArgs e)
{
string val = this.DropDownListTest.SelectedValue;
}
protected void Page_PreInit(object sender, EventArgs e)
{
Page.EnableEventValidation = false;
//"Invalid postback or callback argument" if I remove this.
}
Disons que je clique sur button ButtonClient
(qui modifie les valeurs de liste déroulante), sélectionnez "Terminer", puis cliquez sur ButtonServer
. Dans codebehind, la valeur this.DropDownListTest.SelectedValue
est égale à "Valeur 0" au lieu de "Complète".
Je comprends pourquoi j'obtiens le problème, mais existe-t-il une autre solution en plus d'ajouter les éléments codebehind?
Dans mon cas, cela fonctionne bien depuis 'value' et' Text' sont les mêmes. Mais que ferais-je si je voulais récupérer le 'Text' au lieu de' Value'? Merci. – rbhat
Le 'Text' n'est pas publié sur le serveur. Si vous avez besoin du texte, vous pouvez soit: (1) reconstruire les éléments sur le serveur pour correspondre à la modification effectuée sur le client ou (2) utiliser des champs cachés pour stocker le texte du javascript et obtenir la valeur de ces champs masqués le serveur. – HashPsi