Laden...

DataSet Updaten / Editieren

Erstellt von Mumpitz vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.676 Views
M
Mumpitz Themenstarter:in
79 Beiträge seit 2006
vor 17 Jahren
DataSet Updaten / Editieren

Hy, ich habe mir per sqlCommand eine Tabelle vom SQLServer geladen und gebe diese nun in einen GridView aus. Woweit alles wunderbar.

 
 sqlCommand.Fill(MyDataSet,"Test");
 GridView1.DataSource = MyDataSet;
 GridView1.DataBind();

nun möchte ich die in der Tabelle dieses Datasets Werte per Edit Funktion ändern können und diese dann wieder mit Update in diesem DataSet speichern. Die Daten sollen also nicht zurück in die Datenbank sondern nur in meinem Dataset aktualisiert werden.
Wie stelle ich das an ?

Ist im Moment sehr wichtig für mich, wäre wirklich Super wenn mir da jemand helfen könnte.

Danke im Vorraus

T
68 Beiträge seit 2006
vor 17 Jahren

wird sicher anders auch gehen aber du könntest ein neues DataSet erstellen und die werte mit der Clone() methode "füllen". dann kannst herumhantieren wie du willst und die Orgnialtabelle bleibt erhalten.

D
496 Beiträge seit 2005
vor 17 Jahren

kuck dir mal den command builder an der macht genau was du willst

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

M
Mumpitz Themenstarter:in
79 Beiträge seit 2006
vor 17 Jahren

@ demondriver,

das Hilft mir gerade nicht so sehr weiter, stehe auf dem Schlauch.
Hast evtl ein kleines Beispiel für mich ?

@ TiTime,

die Originaltabelle im Dataset soll ja geändert werden, nur die Änderungen sollen nicht wieder zurück in die Datenbank im SQLServer geschrieben werden. Also alles nur in der Datenbank im Arbeitsspeicher ( Dataset )

Danke für Eure Bemühungen.

D
496 Beiträge seit 2005
vor 17 Jahren


 OdbcCommand mySqlCommand = new OdbcCommand(mySqlCommandText, mySQLConnection);

            OdbcDataAdapter mySqlAdapter = new OdbcDataAdapter(mySqlCommand);

            OdbcCommandBuilder mySqlCommandbuilder = new OdbcCommandBuilder(mySqlAdapter);

            // Open connection
            try
            {
                mySQLConnection.Open();
            }
            catch (OdbcException openEx)
            {
                MessageBox.Show(openEx.Message.ToString());
            }
            catch (Exception genOpenEx)
            {
                MessageBox.Show(genOpenEx.Message.ToString());
            }
            //Update it
            try
            {
                mySqlAdapter.Update(dbfDataTable);
            }
            catch (OdbcException updateEx)
            {
                MessageBox.Show(updateEx.Message.ToString());
            }
            catch (Exception genUpdateEx)
            {
                genUpdateEx.Message.ToString();
            }
            finally
            {
                mySQLConnection.Close();
            }



das ist jetz direkt aus nem code von mir musst du natürluch umschreiben aber das prinzip bleibt das gleiche

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

M
Mumpitz Themenstarter:in
79 Beiträge seit 2006
vor 17 Jahren

fällt Dir evtl noch ein anderer Weg ein ? Ich kann leider keinen Commandbuilder verwenden, da ich als SQL Abfrage Stored Procedures verwende, indenen Templates vorhanden sind um eine bestimmte Tabbelenstruktur während der SQL Abfrage zu erzeugen. Dadranne stört sich der Commandbuilder.

Vielleicht nochmal.

Ich lade mein Dataset mit Daten aus meinem SQLSERVER. Dann binde ich das Dataset an eine GridView und sage AutoGenerateEditButton="True". Wenn ich nun auf Edit klicke


protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;          
            UpdateDataSource();

        }

funktioniert es und alle Werte werden jeweils in Textboxen dargestellt und lassen sich ändern. Was muß ich aber machen wenn ich auf Update klicke ? Kann er nicht einfach das ganze Gridview durchlaufen und alle geänderten Werte in mein Dataset übernehmen ? Da muß es doch bestimmt eine einfache Möglichkeit geben ?!

Hier mein gesammter TestCode



public partial class TestEdit : System.Web.UI.Page
    {
        DateTime dStartDate = DateTime.Parse("2006-08-07");
        int iEmployeeId =100;
        DataSet MyDataSet;

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

        }

        void UpdateDataSource()
        {
            SqlConnection con = new SqlConnection(DBC.GetConnectionString());
            con.Open();            
            
            SqlDataAdapter sqlAdapter = new SqlDataAdapter();

            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "cds_emp";
            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameter pStartdate = new SqlParameter("@Startdate", SqlDbType.DateTime);
            SqlParameter pEmployeeId = new SqlParameter("@EmployeeId", SqlDbType.Int);
            cmd.Parameters.Add(pStartdate);
            cmd.Parameters.Add(pEmployeeId);

            pStartdate.Value = dStartDate;
            pEmployeeId.Value = iEmployeeId; 
      
            MyDataSet = new DataSet("Test");
            sqlAdapter.SelectCommand = cmd;
            sqlAdapter.Fill(MyDataSet,"Test");
            
            con.Close();

            DataTable dTable = MyDataSet.Tables["Test"];

            GridView1.DataSource = dTable;
            GridView1.DataBind();

           
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;          
            UpdateDataSource();

        }
        protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
        {
           
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            // ??????????????????????????????????????????????????????
          
        }

Wäre super wenn sich nochmal jemand meinem Problem annimmt.

M
Mumpitz Themenstarter:in
79 Beiträge seit 2006
vor 17 Jahren

Keiner eine Idee ?