Laden...

[asp.net c#]GridView RowEditing

Erstellt von tonikln vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.766 Views
T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 13 Jahren
[asp.net c#]GridView RowEditing

Hallo zusammen,
ich beziehe Daten vom Webservice und lade sie in eine GridView. Dazu habe ich den Edit Modus aktiviert. Wenn man jetzt auf das edit klickt, werde ich auf eine andere .aspx Seite weitergeitet (die ich erstellt habe). Dort werden dann die Daten in TextBoxen reingeladen. Das ganze funktioniert soweit auch ganz gut.

Nun meine Frage:
Was brauch ich bzw. was muss ich tun, damit ich die Zeile (wo edit geklickt wurde) sich in Textboxen umwandeln und somit eine Bearbeitung der Daten möglich ist ?

Kann mir da jemand was zu sagen?

MfG


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Wenn man jetzt auf das edit klickt, werde ich auf eine andere .aspx Seite weitergeitet (die ich erstellt habe).

Wo/wie hast Du das mit der Umleitung denn gemacht?
Denn was Du haben willst (direkt im GridView editieren) das ist eigentlich das Standardverhalten.
Also ein CommandField mit CommandField.ShowEditButton auf true. Schau Dir mal das Beispiel auf der Seite an.
Beachte auch den gelben Kasten im Abschnitt Hinweise.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 13 Jahren

Hi,

so änlich habe ich das jetzt auch. Das Problem ist jetzt, dass ich aus irgendeinem Grund 2 mal auf Edit klicken muss. Außerdem erscheinen die TextBoxen immer über den Datensatz und sie erscheinen leider leer 😦

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
        AllowSorting="True" AutoGenerateColumns="False" 
        onrowediting="GridView1_RowEditing" DataKeyNames="ows_Title" >
        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            <asp:BoundField DataField="ows_ID" SortExpression="ows_Title" 
                HeaderText="ID" />
                
                
            <asp:BoundField DataField="Title" SortExpression="Title" 
                HeaderText="NR" ></asp:BoundField>
                
                
            <asp:BoundField DataField="Status" SortExpression="Status" 
                HeaderText="Status" />
            <asp:BoundField DataField="Col" 
                SortExpression="Col" HeaderText="Partner" />

Un im Code Behind habe ich das wie folgt:


        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {

            GridView1.EditIndex = e.NewEditIndex;
        }

Irgendwie bin ich momentan verwirrt 😃

Ich habe es jetzt hinbekommen, dass die Daten in die Textboxen eingetragen werden und das jetzt auch in der entsprechenden Zeile. Das lag daran, dass die Felder nicht als TemplateField definiert waren.

Wenn man in der GridView auf das pfeilchen geht -->Edit Columns -> Convert this field into a TemplateField, dann geschieht alles automatisch 😃

Das problem liegt jetzt daran, dass man 2 mal auf das edit button klicken muss, da weiß ich nicht mehr weiter 😦


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

alles soweit richtig. Du musst nur noch die Daten neu binden, weil kein Datenquellen-Steuerelement verwendet wird.

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            // hier die DataSource neu besetzen, bei Bedarf dafür Daten neu abrufen:
            GridView1.DataSource = myData;

            GridView1.EditIndex = e.NewEditIndex;

            // schliesslich neu binden:
            GridView1.DataBind();
        }

So müsste es klappen.
Du musst auch noch einen OnRowUpdating-Handler zur Verfügung stellen, und dort selbst für das Update Deiner Daten sorgen. Und auch dort müssen nach dem Update die Daten neu gebunden werden.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 13 Jahren

Vielen Dank
Jetzt klappt es auch beim ersten mal auf Edit klicken 😃

Nochmals Danke


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 13 Jahren

Du musst auch noch einen OnRowUpdating-Handler zur Verfügung stellen, und dort selbst für das Update Deiner Daten sorgen. Und auch dort müssen nach dem Update die Daten neu gebunden werden.

Hi,
OnRowUpdating-Handler habe ich hinzugefügt, nun besteht das Problem, das die TextBoxen in der GridView sind und weiß nicht genau wie ich den Wert in der TextBox anspreche.
Der Wert ist für mich wichtig, da ich eine Query brauch:

 batchElement.InnerXml = "<Method ID='1' Cmd='Update'>" +
                "<Field Name='Title'>" + (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1") + "</Field>"

So wie ich es gerade geschrieben habe, suche ich nach der TexBox1. wie komm ich an den Wert ran ?
MfG

Hinweis von MarsStein vor 13 Jahren

Bitte keine Full Quotes - Zitat gekürzt.


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

Du bekommst ja an das Event GridViewUpdateEventArgs übergeben.

Dann darf man auch mal selber in die Doku schauen, was einem diese Klasse so biete, und fällt förmlich über die GridViewUpdateEventArgs.NewValues-Eigenschaft.
Da stehen die neue Werte drin und sind über den Spaltennamen abrufbar mit

e.NewValues["columnName"]

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca