Avatar billede strafenmacher Nybegynder
14. november 2004 - 16:32 Der er 1 løsning

Update i DataGrid

Jeg har lavet et datagrid, og vil kunne editere i det v.h.a. EditCommand- og UpdateCommand events.
Når jeg kører programmet trykker jeg først på "edit" og kan så redigere den ønskede række i DataGrid. Når jeg så trykker på "update", så opdateres de nye data i tekstboksene ikke, men de oprindelige data bliver ved med at stå i DataGrid.
Jeg mener jo at koden ser fornuftig ud, men der må mangle et eller andet.
Håber der er nogen der kan hjælpe.

Her er koden.....

public class DataGrid2 : System.Web.UI.Page
{
  protected Label Label1;
  protected SqlDataAdapter sqlDataAdapter1;
  protected SqlCommand sqlSelectCommand1;
  protected SqlCommand sqlInsertCommand1;
  protected SqlConnection sqlConnection1;
  protected Accessing_and_Binding_Data.DataSet2 dataSet21;
  protected DataGrid DataGrid1;
   
  private void Page_Load(object sender, EventArgs e)
  {
    sqlDataAdapter1.Fill(dataSet21);
    DataGrid1.DataKeyField = "ID";
    DataGrid1.DataBind();
  }

  private void DataGrid1_EditCommand(object source,
                                DataGridCommandEventArgs e)
  {
    DataGrid1.DataSource = dataSet21.Persondata.DefaultView;
    DataGrid1.DataKeyField = "ID";
    DataGrid1.EditItemIndex = e.Item.ItemIndex;
    DataGrid1.DataBind();
  }

  private void DataGrid1_UpdateCommand(object source,
                                DataGridCommandEventArgs e)
  {
    TextBox TB_Fornavn, TB_Efternavn, TB_Alder;
    TB_Fornavn = (TextBox)e.Item.Cells[1].Controls[0];
    TB_Efternavn = (TextBox)e.Item.Cells[2].Controls[0];
    TB_Alder = (TextBox)e.Item.Cells[3].Controls[0];

    DataSet2.PersondataDataTable personTable =
                                      dataSet21.Persondata;
    DataSet2.PersondataRow rowToUpdate =
                  (DataSet2.PersondataRow)personTable.Rows
                                        [e.Item.ItemIndex];
    rowToUpdate.Fornavn = TB_Fornavn.Text;
    rowToUpdate.Efternavn = TB_Efternavn.Text;
    rowToUpdate.Alder = Convert.ToInt16(TB_Alder.Text);
    sqlDataAdapter1.Update(dataSet21);
    DataGrid1.DataSource = dataSet21.Persondata.DefaultView;
    DataGrid1.EditItemIndex = -1;
    DataGrid1.DataBind();
  }
}
Avatar billede strafenmacher Nybegynder
14. november 2004 - 19:31 #1
Jeg har selv fundet ud af, at man i Page_load skal tilføje if(!IsPostBack), og derefter tilføje sqlDataAdapter1.Fill(dataSet21) i de andre events/funktioner (Cancel_Command, Update_Command etc.).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester