2011-01-11 2 views
0

J'ai le travail suivant jusqu'à présent en C# sur mon Gridview appelé GridView1. Cela fonctionne quand je le mets dans le onSelectedIndexChanged.Gridviewcell à la zone de texte ne fonctionne pas

HostTextbox.Text = GridView1.SelectedRow.Cells[0].Text; 

mais étant donné que ce message au serveur que je veux éviter, parce que je vais faire pour les cellules [0] aux cellules [10]. Donc, j'ai regardé Javascript. J'ai fait des recherches sur Google et trouvé diverses solutions, et c'est celle que j'ai "semi-travaillée" jusqu'à présent.

Mon C# ressemble à ceci:

int myRowIdx = 0; // class variable 

protected void OnRowCreated(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      e.Row.Attributes.Add("ondbclick", "sample('" + myRowIdx.ToString() + "')"); 
     } 
     myRowIdx++; 
    } 

Dans mon Javascript, je me alertes inséré dire où le problème happpens. Il ressemble à ceci:

function sample(rowIn) { 
     alert("A"); 
     var gViewID = '<%= GridView1.ClientID %>'; 
     alert("B"); 
     var gView = getElementById(gViewID); 
     alert("C"); 
     var gViewRow = gView.rows[rowIn]; 
     alert("D"); 
     var gViewRowColumn = gViewRow.cells[0]; 
     alert("E"); 
     var displayCell = gViewRowColumn.innerText; 
     alert("F"); 
     alert(displayCell); 
    } 

B est la dernière alerte que je vois. Je n'arrive pas à comprendre cela. J'ai regardé attentivement et toujours pas de succès. S'il vous plaît aider.

Répondre

1

Je ne comprends pas ce que vous voulez dire par "Je veux l'éviter parce que je vais le faire pour les cellules [0] aux cellules [10]". Vous pouvez le faire pour chaque cellule de la ligne sélectionnée successivement. Vous n'avez donc besoin que d'un seul Postback. En fonction de vos problèmes Javascript, vous pouvez simplement passer le tr (GridViewRow) en tant que js-variable à votre exemple de fonction. Par conséquent, il suffit de passer this comme paramètre:

e.Row.Attributes.Add("ondbclick", "sample(this)"); 

et dans votre js-fonction:

function sample(tr) { 
     var gViewRowColumn = tr.cells[0]; 
     var displayCell = gViewRowColumn.innerText; 
     alert(displayCell); 
    } 
+0

Merci ça a marché! Ce que je voulais dire plus tôt à propos des cellules [0] était que je le faisais successivement comme vous l'avez déjà dit (je ne l'ai pas inclus dans ma question). Quand je le fais, la page entière se recharge et Gridview se rafraîchit avec environ 10 000 enregistrements. Je pensais que cela arrive parce que le code C# était côté serveur. Utilisation du côté client Javascript était le meilleur. Merci encore. – GetRichSlow1

Questions connexes