Avatar billede ghorfraq Nybegynder
11. november 2003 - 09:14 Der er 4 kommentarer og
1 løsning

Udhentning af row i DataGrid

Jeg har et datagrid indeholdende data fra et object jeg selv har genereret. Når man markerer en række skal denne kunne ændres og de nye værdier vises i grid'et. Dvs jeg er interesseret i at hente værdierne i de enkelte kolonneHeaders og manipulere dem, og derefter indsætte dem på deres gamle pladser (en opdatering så at sige)
Nogle der kan hjælpe?

Kode:
                    // Instantiate the DataSet variable.
            myDataSet = new DataSet();
           
            //DataTable
            myDataTable = new DataTable("Tidsurregistreringer");
            myDataSet.Tables.Add(myDataTable);

            #region datacolumns
            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn = new DataColumn();
            myDataColumn.DataType = Type.GetType("System.String");
            myDataColumn.ColumnName = "LinieNr";
            myDataColumn.ReadOnly = true;
            myDataColumn.Unique = true;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn1 = new DataColumn();
            myDataColumn1.DataType = Type.GetType("System.String");
            myDataColumn1.ColumnName = "Ordretype";
            myDataColumn1.ReadOnly = true;
            myDataColumn1.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn1);
           
            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn2 = new DataColumn();
            myDataColumn2.DataType = Type.GetType("System.String");
            myDataColumn2.ColumnName = "Ordrenummer";
            myDataColumn2.ReadOnly = true;
            myDataColumn2.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn2);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn3 = new DataColumn();
            myDataColumn3.DataType = Type.GetType("System.String");
            myDataColumn3.ColumnName = "Operation";
            myDataColumn3.ReadOnly = true;
            myDataColumn3.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn3);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn4 = new DataColumn();
            myDataColumn4.DataType = Type.GetType("System.String");
            myDataColumn4.ColumnName = "Startdato";
            myDataColumn4.ReadOnly = true;
            myDataColumn4.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn4);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn5 = new DataColumn();
            myDataColumn5.DataType = Type.GetType("System.String");
            myDataColumn5.ColumnName = "Stopdato";
            myDataColumn5.AllowDBNull = true;
            myDataColumn5.ReadOnly = true;
            myDataColumn5.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn5);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn6 = new DataColumn();
            myDataColumn6.DataType = Type.GetType("System.String");
            myDataColumn6.ColumnName = "Starttid";
            myDataColumn6.AllowDBNull = true;
            myDataColumn6.ReadOnly = true;
            myDataColumn6.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn6);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn7 = new DataColumn();
            myDataColumn7.DataType = Type.GetType("System.String");
            myDataColumn7.ColumnName = "Stoptid";
            myDataColumn7.AllowDBNull = true;
            myDataColumn7.ReadOnly = true;
            myDataColumn7.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn7);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn8 = new DataColumn();
            myDataColumn8.DataType = Type.GetType("System.String");
            myDataColumn8.ColumnName = "Antal timer";
            myDataColumn8.ReadOnly = true;
            myDataColumn8.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn8);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn9 = new DataColumn();
            myDataColumn9.DataType = Type.GetType("System.String");
            myDataColumn9.ColumnName = "Antal minutter";
            myDataColumn9.ReadOnly = true;
            myDataColumn9.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn9);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn10 = new DataColumn();
            myDataColumn10.DataType = Type.GetType("System.String");
            myDataColumn10.ColumnName = "Status";
            myDataColumn10.ReadOnly = true;
            myDataColumn10.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn10);

            // Create new DataColumn, set DataType, ColumnName and add to DataTable.   
            DataColumn myDataColumn11 = new DataColumn();
            myDataColumn11.DataType = Type.GetType("System.String");
            myDataColumn11.ColumnName = "Fejlbeskrivelse";
            myDataColumn11.ReadOnly = false;
            myDataColumn11.Unique = false;
            // Add the Column to the DataColumnCollection.
            myDataTable.Columns.Add(myDataColumn11);
            #endregion
                               
            for(int i = (setPacket.GetSize()-1); i >= 0; i--)
            {               
                myDataRow = myDataTable.NewRow();

                myDataRow["LinieNr"] = setPacket.GetSTidsregistreringsLinieNr(i);
                myDataRow["Ordretype"] = setPacket.GetSOrdreType(i);
                myDataRow["Ordrenummer"] = setPacket.GetSOrdreNum(i);               
                myDataRow["Operation"] = setPacket.GetSOperation(i);               
                myDataRow["Startdato"] = setPacket.GetSStartDate(i);               
                myDataRow["Stopdato"] = setPacket.GetSStopDate(i);               
                myDataRow["Starttid"] = setPacket.GetSStartTid(i);               
                myDataRow["Stoptid"] = setPacket.GetSStopTid(i);               
                myDataRow["Antal timer"] = setPacket.GetSIdagTimer(i);               
                myDataRow["Antal minutter"] = setPacket.GetSIdagMinutter(i);               
                myDataRow["Status"] = setPacket.GetSTidsregistreringsStatus(i);               
                myDataRow["Fejlbeskrivelse"] = setPacket.GetSFejlBeskrivelse(i);               
                myDataTable.Rows.Add(myDataRow);
            }

            setPacket = null;
            godkendDialog.DataGrid1.SetDataBinding(myDataSet, "Tidsurregistreringer");                     
            godkendDialog.Show();
Avatar billede ghorfraq Nybegynder
11. november 2003 - 09:17 #1
har så følgende Button event:
this.bGodkendt.Click += new System.EventHandler(this.bGodkendt_Click);

private void bGodkendt_Click(object sender, System.EventArgs e)
{               
    rowIndex = dataGrid1.CurrentRowIndex;   
    dataGrid1.Select(rowIndex);
    godkendValgtRecord();           
}

i Metoden godkendValgtRecord() skal opdatering finde sted
Mere nøjagtigt er det feltet "Status" der enten kan være godkendt eller ikke godkendt
Avatar billede finger Nybegynder
11. november 2003 - 09:27 #2
forstår vist ikke helt dit spørgsmål, men jeg prøver.
Hvis du bare skal have opdateret et felt efter klik på en knap kan du gøre sådan her:

myDataSet.Tables["Tidsurregistreringer"].Rows[dataGrid1.CurrentRowIndex]["Status"] = din værdi;

eller er det ikke det du spørger om?
Avatar billede ghorfraq Nybegynder
11. november 2003 - 11:09 #3
essensen i mit spørgsmål ligger egenlig bare i at kunne tilgå de enkelte felter i mit dataset, så dit svar er i princippet fyldestgørende. Jeg skal kunne ændre værdierne i bestemte kolonner i den linie jeg vælger. Så hvis dit forslag virker er det fint.
Avatar billede finger Nybegynder
11. november 2003 - 12:58 #4
det gør det.

her er et kørende eksempel. Bare erstat alt koden i en ny form med denne:
--------------form1-----------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication11
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.DataGrid dataGrid1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.dataGrid1 = new System.Windows.Forms.DataGrid();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
            this.SuspendLayout();
            //
            // dataGrid1
            //
            this.dataGrid1.AllowNavigation = false;
            this.dataGrid1.DataMember = "";
            this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dataGrid1.Location = new System.Drawing.Point(8, 8);
            this.dataGrid1.Name = "dataGrid1";
            this.dataGrid1.Size = new System.Drawing.Size(304, 136);
            this.dataGrid1.TabIndex = 0;
            //
            // textBox1
            //
            this.textBox1.Location = new System.Drawing.Point(160, 200);
            this.textBox1.Name = "textBox1";
            this.textBox1.TabIndex = 1;
            this.textBox1.Text = "textBox1";
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(312, 208);
            this.button1.Name = "button1";
            this.button1.TabIndex = 2;
            this.button1.Text = "button1";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(424, 270);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.dataGrid1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        DataSet ds;

        private void Form1_Load(object sender, System.EventArgs e)
        {
            ds = new DataSet();
            DataTable dt = new DataTable("dt");
            dt.Columns.Add(new DataColumn("Column1"));
            dt.Columns.Add(new DataColumn("Column2"));
            DataRow dr = dt.NewRow();
            dr["Column1"] = "hej1";
            dr["Column2"] = "hej1";
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["Column1"] = "hej2";
            dr["Column2"] = "hej2";
            dt.Rows.Add(dr);
       
            ds.Tables.Add(dt);
            ds.AcceptChanges();
            dataGrid1.DataSource = ds;
            dataGrid1.DataMember = "dt";
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            ds.Tables["dt"].Rows[dataGrid1.CurrentRowIndex]["Column2"] = textBox1.Text;
        }
    }
}
Avatar billede ghorfraq Nybegynder
11. november 2003 - 14:24 #5
det ser jo fint, men det første svar var nu nok...
men tak for hjælpen
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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