Bonsoir à tous.Problème lié au gridview; résolution jquery en unbind?
J'ai un peu de casse-tête pour vous.
Sur ma page, j'ai un ddl en cascade (ddlBuyer), une recherche de zone de texte (tbxProdAC) et une liste de boutons radio (radTopx). Ceux-ci, une fois peuplés, et un bouton de soumission cliqué, produit une grille de peuplement avec des données. Ce que j'essaye de réaliser est que l'utilisateur peut seulement choisir le ddl, le textbox ou la liste de radiobutton comme méthode pour produire les données gridview. J'ai atteint ce but, en écrivant un peu de syntaxe jquery qui "efface" la grille et réinitialise les différentes méthodes de recherche, par exemple.
<code>
ddlBuyer.Attributes.Add("onclick",
"$('#tbxProdAC').val('');
$('#txtbxHowMany').val('');
$('#GridView1').remove();
$('#radTopx input').attr('checked',false);
$('#radProd').attr('checked', false);");
</code>
Cependant, parce que cela se produit côté client, les événements côté serveur (à savoir ddlBuyer_SelectedIndexChanged) sont encore en cours d'exécution et par la suite, les données sont liées quand je ne veux pas vraiment à. c'est-à-dire que si je sélectionne le bouton radtopx, cliquez sur le bouton pour produire le gridview (ceci se produit sur une publication).
protected void btnSubmit_Click(object sender, EventArgs e) {
if (radTopx.SelectedValue == "" || txtbxHowMany.Text == "")
{
MessageBox.Show("Please Ensure that BOTH 'The Number of Products' and Appropriate material Is selected Before You Attempt To Run a TOP x Report", "Top x Error!!!",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
GridView1.DataSourceID = null;
}
else
{
int max = 0;
if (int.TryParse(txtbxHowMany.Text, out max))
{
GridView1.DataSource = this.GetMaterialData(Session["MemberKey"].ToString(), radTopx.SelectedItem.Value, "Primary", max);
GridView1.DataSourceID = String.Empty;
GridView1.DataBind();
}
}
Je puis cliquez sur ddlBuyer, les informations radTopx est effacé, mais le gridview est retenu comme ce qui suit est tiré:
rotected void ddlBuyer_SelectedIndexChanged(object sender, EventArgs e) { ORDataClassesDataContext dbII = new ORDataClassesDataContext(); var queryII = (from r in dbII.tblOnlineReportingFINALPRODUCTs where r.UnitUserfield1 == ddlBuyer.SelectedValue select new { UnitUserfield2 = r.UnitUserfield2 }).Distinct().OrderBy(r => r.UnitUserfield2);
ddlSub.DataSource = queryII;
ddlSub.DataTextField = "UnitUserfield2";
ddlSub.DataValueField = "UnitUserfield2";
ddlSub.DataBind();
ddlSub.Items.Insert(0, "--Choose Sub Category--");
GridView1.DataSourceID = null;
est-il un moyen de « délier » la grille afficher via jquery de sorte que lorsque ddlBuyer est cliqué, le gridview a publié toutes les données qu'il a pu contenir auparavant? Excuses si cela n'a pas de sens, il est un peu difficile de décrire succinctement et avec précision.
Bonjour Iain. Merci beaucoup d'avoir répondu et d'avoir pris le temps de regarder ce petit scénario pour moi. J'ai effectivement réussi à tromper mon application Web ... lorsqu'un utilisateur sélectionne la liste déroulante, la zone de texte ou la liste des boutons radio, une publication est effectuée. Je viens donc de faire un flic et de lier le gridview à une source de données nulle à ce stade ... donc, quand la page est rafraîchie, rien ne sera présent dans la gridview. Une belle petite triche! Cependant, je vais avoir un jeu avec ce qui précède, car il est très intéressant. Merci encore. – MrDean
Pas de soucis MrDean, merci pour les commentaires :) –
Je reviendrai peut-être vers vous Iain !!! Cela me rend fou encore ... en utilisant ma triche a fait échouer le tri/paging dans mon gridview alors je vais vous donner la méthode un aller. – MrDean