Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

Letzter Beitrag 01-15-2008 19:04 von RuprechtHelms. 11 Antworten.
Seite 1 von 1 (12 Treffer)
Beiträge sortieren: Zurück Weiter
  • 07-02-2007 23:40

    GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo,

    ich habe ein Gridview:

    <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" OnDataBinding="GridView1_DataBinding" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" AllowSorting="True" DataKeyNames="CategoryID" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating="GridView1_RowUpdating" AutoGenerateColumns="False">
    <...>
    <Columns>
    <asp:TemplateField ShowHeader="False">
    <EditItemTemplate>
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update" Text="Aktualisieren"></asp:LinkButton>
    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel" Text="Abbrechen"></asp:LinkButton></EditItemTemplate>
    <ItemTemplate>
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit" Text="Bearbeiten"></asp:LinkButton>
    <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete"
    Text
    ="L”schen"></asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Nummer">
    <itemtemplate>
    <%#Eval("CategoryID")%>
    </itemtemplate>
    <edititemtemplate>
    <asp:label id="LabelCategoryID" text='<%#Eval("CategoryID")%>' runat="server"/>
    </edititemtemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Name">
    <itemtemplate>
    <%#Eval("CategoryName")%>
    </itemtemplate>
    <edititemtemplate>
    <asp:textbox id="TextBoxCategoryName" Text='<%#Eval("CategoryName")%>' runat="server"/>
    <br/><asp:requiredfieldvalidator id="CategoryNameRequiredValidator" Controltovalidate="TextBoxCategoryName" display="Dynamic" text="Please enter a name." runat="server" />
    </edititemtemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>

    und versuche die geänderten Daten in dem Feld "CategoryName" irgendwie herauszubekommen:

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
    int index = GridView1.EditIndex;
    GridViewRow row = GridView1.Rows[index];
    Label lblCategoryID = (Label)row.FindControl("LabelCategoryID");
    TextBox tbCategoryName = (TextBox)row.FindControl("TextBoxCategoryName");
    e.NewValues["CategoryID"] = lblCategoryID.Text;
    e.NewValues[
    "CategoryName"] = tbCategoryName.Text;
    }

    Leider ist in der Textbox immer nur der alte Wert zu lesen.

    Wie komme ich an den neuen Wert heran?

    Vielen Dank im Voraus,

    Bernhard

    http://www.ComSport.de
    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 07-03-2007 6:54 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    der neue Wert ist in

      e.NewValues["CategoryID"]

    aber den überschreibst Du schön mit dem alten Wert :-)

    Chris

    • IP-Adresse ist Registriert
  • 07-03-2007 6:57 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    OK falsches Feld:

    <asp:textbox id="TextBoxCategoryName" Text='<%#Eval("CategoryName")%>' runat="server"/>

    Das Eval muß Bind heißen(zumindest beim Formview geht es so)

    <asp:textbox id="TextBoxCategoryName" Text='<%#Bind("CategoryName")%>' runat="server"/>

    dann klppts auch mit  e.NewValues["CategoryName"]

    • IP-Adresse ist Registriert
  • 07-03-2007 8:45 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo,

    schade, auch mit "Bind" funktioniert es nicht.
    Ich bin nach dem Beispiel von http://msdn2.microsoft.com/de-de/library/system.web.ui.webcontrols.templatefield.edititemtemplate(VS.80).aspx vorgegangen.

    e.NewValues["CategoryName"] und e.NewValues["CategoryID"] sind null, wird auch beim debuggen mit Count 0 angezeigt.

    Eigentlich will ich nur an den neuen Wert herankommen, den der User in die geöffnete Textbox schreib, die nach dem Klich auf "Bearbeiten" im GridView, erscheint. Ist das denn so schwierig?

    Gruß

    Bernhard

    http://www.ComSport.de
    • IP-Adresse ist Registriert
  • 07-03-2007 8:55 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    evt. funktioniert das nur wenn Du Dein Gridview and eine SQLDatasource oder ähnlichem bindest .... wie bindest Du die Datenquelle?

     

    • IP-Adresse ist Registriert
  • 07-03-2007 9:02 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo Cris,

    ich binde mauell:

    this.GridView1.DataSource = this.SelectProductCategorys(out error);
    this.lblErrorMessage.Text = error;
    this.GridView1.DataBind();

    Ich werde mal an ein SQLDataseurce binden, oder ich nehme wie früher ein DataGrid, damit funktioniert das...

    Gruß

    Bernhard

    http://www.ComSport.de
    • IP-Adresse ist Registriert
  • 07-03-2007 9:03 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Genau.....
    Schau Dir mal die Methode ExtractValuesFromCell() an.

    Die hilft Dir meines erachtens dabei, die Values zu bekommen, wenn Du ohne DataSourceControl bindest.

    Gruss,
    Oliver

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 07-03-2007 9:17 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo nochmal....

    Hier ein Beispiel mit der Methode ExtractValuesFromCell()

    Damit sollte es doch eigentlich klappen...bei mir funktionierts...

        void gvBlogs_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            //some local variables
            GridView gv = (GridView)sender;
            GridViewRow row = gv.Rows[e.RowIndex];
           
            //get all new values from the autobinded columns like BoundField,CheckBoxField...
            for (int i = 0; i < gv.Columns.Count; i++)
            {
                DataControlFieldCell cell = (DataControlFieldCell)row.Cells[i];
                gv.Columns[i].ExtractValuesFromCell(e.NewValues, cell, DataControlRowState.Edit, true);
            }
           
            //get the new value from the TemplateField
            TextBox txtNewFirstName = (TextBox)row.Cells[5].FindControl("txtNewFirstName");
           
            //show all newValues from the autogenerated fields
            foreach (string key in e.NewValues.Keys)
            {
                Response.Write("<br/>" + key + ": " + e.NewValues[key]);
            }

            //show the newValue from the TemplateField
            Response.Write("<br/>NewFirstName: " + txtNewFirstName.Text);

            gv.EditIndex = -1;

                                                                                        
        }

    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 07-03-2007 10:42 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo,

    vielen Dank, aber ich komme nur an den alten Wert heran. :-))

    Ich probiere gerade an ein SQLDataseurce binden. Im ersten Versuch hatte ich das gewünschte Ergebnis.

    Gruß

    Berhard

    http://www.ComSport.de
    • IP-Adresse ist Registriert
  • 01-10-2008 16:09 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Das selbe Problem habe ich jetzt mit einem DetailView, bei dem mir die neuen Inhalte nicht eingelesen werden. Und dies sowohl beim SQL-Statement innerhalb der aspx-Seite, also innerhalb des SQL-Datasource als auch der SQL-Anweisung, die eine andere Tabelle innerhalb der Codebehindseite anpasst.

    Ruprecht Helms 

    • IP-Adresse ist Registriert
  • 01-15-2008 18:16 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo Ruprecht,

    es kann sein, dass ich die Lösung habe, schaue Dir mal http://www.microsoft.com/germany/msdn/library/net/aspnet/ListendarstellungMitDemDataListControl.mspx?mfr=true 
    an. Hier insbesondere das Kapital "Problem bei ASP.NET". Hier ist zwar das Handling bei einer DataList beschrieben, I think, es ist aber zu vergleichen.

    Bei mir sieht die genannte Funktion GetData() wie folgt aus:

    this.myDataList.DataSource = database.SelectKommentare(1, out error); 
    this.lblError.Text = error;
    // Daten binden
    this.myDataList.DataBind();

    GetData() wird bei mir aufgerufen in EditCommand(...) - Klick auf Button "Datensatz editieren". Die geänderten Daten hole ich mir in der Funktion UpdateCommand(...) der DataList mit

    string comment = ((TextBox)e.Item.FindControl("TextBox1")).Text;

    Das müsste es sein.

    Viele Grüße

    Bernhard

     

    http://www.ComSport.de
    • IP-Adresse ist Registriert
  • 01-15-2008 19:04 Antwort zu

    AW: GridView - RowUpdating - Neuer Wert in Textbox wird nicht gelesen

    Hallo,

    ein Versuch ist es wert. Gegenwärtig habe ich unter  der ASP.net-Variante das Problem, dass mir die Fehlermeldung kommt, dass der Parameter @ArtikelID gewünscht wird, der aber nicht definiert wurde. Und hier lässt mich Dotnet eben schon das ganze Wochenende hängen.

    In Php hatte ich in einer 1/4 Stunde dieses Problem gelöst  und läuft bestens  auf meiner Linuxkiste mit Apache. Momentan fahre ich zweigleisig, da das Projekt in ASP-Dotnet begonnen wurde und ich hier einige Anpassungen vornehmen soll.

     

    Zu  Deinem Vorschlag. Ich hatte mal  den Versuch gemacht gehabt die Formularfelder direkt auszulesen. Ich glaube es verhält sich hier ähnlich. Allerdings sollte dann der String  commnent  gekapselt sein  so wie mit der Funktion    mysql_real_escape()    in Php, die die Inhalte der Formvariable kapselt und so einer SQL-Injection entgegenwirkt.

    Gruss
    Ruprecht

    www.rheyn.de 

     

     

    • IP-Adresse ist Registriert
Seite 1 von 1 (12 Treffer)