J'ai une tâche simple - pour changer le lien de page sur le changement d'état case à cocher - mais je suis nouveau à ASP.NET et ai quelques problèmes.ASP.NET état CheckBox et PostBack
je peux faire la même chose en utilisant HtmlControl et JavaScript:
<script type="text/javascript" language="javascript">
function checkbox_onChanged(checked) {
if (checked) {
document.location = '?type=request_in&show=all';
}
else {
document.location = '?type=request_in&show=unapproved';
}
}
function checkbox_onLoad(checkbox) {
checkbox.checked = true;
}
</script>
<form action="" method="get">
<input type="checkbox" name="checkbox"
onload="checkbox_onLoad(this)"
onchange="checkbox_onChanged(this.checked)" />Show all
</form>
mais je veux cacher des utilisateurs. Alors je fais:
<asp:CheckBox runat="server" ID="check"
OnCheckedChanged="check_CheckedChanged"
AutoPostBack="True" Text="Show all" />
protected void check_CheckedChanged(object sender, EventArgs e)
{
Response.Redirect(String.Format("{0}?type=request_in&show={1}", Request.Path,
checkViewRequestIn.Checked ? "all" : "unapproved"));
}
protected void Page_Load(object sender, EventArgs e)
{
var show = Request["show"];
if (!String.IsNullOrEmpty(show) && String.Equals(show, "all"))
{
checkViewRequestIn.Checked = true;
}
}
Mais il semble que l'enregistrement de changement d'état de la charge Déclenche l'événement à nouveau et la case devient toujours vérifié!
Ans une autre question - existe-t-il un autre moyen de rediriger vers la même page sans donner son nom de fichier? Je veux dire comme en JavaScript - seulement donner des variables nécessaires?
Merci pour votre réponse! Mais je ne veux pas faire ça du côté client. Pourriez-vous m'indiquer comment faire la tâche uniquement sur le serveur? Mon paradigme logiciel nécessite une quantité minimale d'actions côté client. – abatishchev
pourquoi envoyez-vous l'info dans la chaîne de requête? vous pouvez simplement accéder à la propriété check.Checked. note ASP.NET viewstate conservera l'état de votre case à cocher entre les publications sans que vous ayez à tester Request ["show"]. – russau
Merci beaucoup! – abatishchev