GridView RowUpdating gibt die alten Werte nach dem PostBack

Hab ich ein problem mit meinem GridView. Wenn ich versuche zu Bearbeiten, mein GridView bekomme ich nur die alten Werte zurück.

Hier ist das RowUpdating-Ereignis:

protected void grid_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
    TextBox nVorname = (TextBox)row.FindControl("newVorname");
    TextBox nNachname = (TextBox)row.FindControl("newNachname");
    TextBox nTelnr = (TextBox)row.FindControl("newTelnr");
    TextBox nEmail = (TextBox)row.FindControl("newEmail");
    HiddenField tid = (HiddenField)row.FindControl("id");

    grid.EditIndex = -1;

    SqlConnection sqlConn = new SqlConnection("server=localhost;Integrated Security=true;database=Telefonbuch;");
    sqlConn.Open();
    SqlCommand cmd = new SqlCommand("update dasOertliche set vorname= @vorname, nachname=@nachname, telefonnr =@telnr, email =@email where id = @id", sqlConn);
    cmd.Parameters.Add("@vorname", SqlDbType.VarChar);
    cmd.Parameters["@vorname"].Value = nVorname;
    cmd.Parameters.Add("@nachname", SqlDbType.VarChar);
    cmd.Parameters["@nachname"].Value = nNachname.Text;
    cmd.Parameters.Add("@email", SqlDbType.VarChar);
    cmd.Parameters["@email"].Value = nEmail.Text;
    cmd.Parameters.Add("@telnr", SqlDbType.VarChar);
    cmd.Parameters["@telnr"].Value = nTelnr.Text;
    cmd.Parameters.Add("@id", SqlDbType.Int);
    cmd.Parameters["@id"].Value = tid.Value;

    cmd.ExecuteNonQuery();
    sqlConn.Close();
    bind();
}

Des TemplateField aus .aspx:

 <Columns>
    <asp:TemplateField HeaderText = "Vorname">
    <ItemTemplate>    <%#Eval ("vorname") %></ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox ID="newVorname" runat="server" Text='<%#Eval ("vorname") %>'>
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateField>
   </columns>

Und mein GridView-code:

<asp:GridView runat="server" ID="grid" BorderWidth="0px" CellPadding="10" 
CellSpacing="10" HorizontalAlign="Center" AutoGenerateDeleteButton="True" 
AutoGenerateEditButton="True" onrowcancelingedit="grid_RowCancelingEdit" 
onrowediting="grid_RowEditing" onrowupdating="grid_RowUpdating" 
AutoGenerateColumns="False">

Wie gesagt, es gibt immer die alten Werte. Irgendwelche Vorschläge?

Meine Page_Load:

protected void Page_Load(object sender, EventArgs e)
{
    bind();
    if (!Page.IsPostBack)
    {
        bind();
    }
}

Mein bind():

 public void bind()
    {
        SqlConnection sqlConn = new SqlConnection("server=localhost;Integrated Security=true;database=Telefonbuch;");
        sqlConn.Open();
        SqlDataAdapter sqlComm = new SqlDataAdapter("SELECT id, vorname AS 'Vorname', nachname AS 'Nachname', telefonnr, email AS 'E-Mail' FROM dasOertliche ORDER BY nachname ASC", sqlConn);
        DataSet ds = new DataSet();
        sqlComm.Fill(ds, "dasOertliche");
        grid.DataSource = ds.Tables[0];
        grid.DataBind();
        sqlConn.Close();
    }
InformationsquelleAutor Södy | 2013-06-04
Schreibe einen Kommentar