2011-01-11 9 views
0

Ich habe die folgenden Arbeiten bisher in C# auf meiner Gridview namens GridView1. Es funktioniert, wenn ich es in den onSelectedIndexChanged lege.Gridviewcell to Textbox funktioniert nicht

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

aber da diese Daten an den Server zurück ich will, es zu vermeiden, weil ich es für Zellen tun wird [0] an Zellen [10]. Also habe ich Javascript angeschaut. Ich habe gegoogelt und verschiedene Lösungen gefunden, und das ist die eine, die ich bisher "semi-working" habe.

Mein C# sieht wie folgt aus:

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++; 
    } 

In meinem Javascript ich Benachrichtigung eingefügt, mir zu sagen, wo das Problem happpens. Es sieht so aus:

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 ist die letzte Warnung, die ich sehe. Ich kann das nicht herausfinden. Ich schaute genau hin und immer noch keinen Erfolg. Bitte helfen Sie.

Antwort

1

Ich verstehe nicht, was du meinst mit "Ich möchte es vermeiden, weil ich es für Zellen [0] Zellen [10] tun werde". Sie könnten dies nacheinander für jede Zelle in der ausgewählten Zeile tun. Du brauchst also nur einen Postback.

Je nach Ihren Javascript-Problemen könnten Sie einfach die tr (GridViewRow) als js-Variable an Ihre Sample-Funktion übergeben. Daher haben Sie nur this als Parameter zu übergeben:

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

und in Ihrer js-Funktion:

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

Dank funktioniert es! Was ich früher über die Zellen [0] meinte, war, dass ich es nacheinander mache, wie du es schon gesagt hast (ich habe es einfach nicht in meine Frage aufgenommen). Wenn ich dies tue, wird die gesamte Seite neu geladen und die Gridview wird mit etwa 10.000 Datensätzen aktualisiert. Ich dachte, dass es passiert, weil der C# -Code serverseitig war. Mit Client-Seite war Javascript am besten. Danke nochmal. – GetRichSlow1

Verwandte Themen