Avatar billede pumpin Nybegynder
05. december 2006 - 00:02 Der er 3 kommentarer

loop igennem en bestemt dataRow i en dataTable

Hej eksperter

når nu jeg nemt kan loope igennem en datatable's datarows med en foreacht løkke. tænkte jeg at det da også måtte være muligt, at loppe igennem en bestemt datarow columns, i min datatable.

jeg har prøvet noget i den her dur:
int _randomNumber = GetRandomNumber();
foreach(DataColumn col in _ting.Rows[_randomNumber])
            {
                output.RenderBeginTag(HtmlTextWriterTag.Td);
//vil faktiks gerne have værdien af feltet og ikke navnet :)
                output.Write(col.ColumnName.ToLower());
                output.RenderEndTag();

            }
Avatar billede bulgroz Nybegynder
05. december 2006 - 08:54 #1
Her et lille eksempel som forhåbentligt kan hjælpe dig på vej:

    public partial class Form1 : Form
    {
        private const string ColumnA = "Column A";
        private const string ColumnB = "Column B";
        private const string ColumnC = "Column C";

        private DataTable dataTable = new DataTable("My DataTable");

        public Form1()
        {
            InitializeComponent();

            this.CreateDemodata();

            this.dataGridView1.DataSource = this.dataTable;

            DataRow row = this.GetRandowRow();

            foreach (DataColumn dataColumn in this.dataTable.Columns)
            {
                string columnName = dataColumn.ColumnName;
                string cellValue = row[dataColumn] as string; // Her string, men det kommer an på data.

                // TODO: Hvad du ønsker...
            }
        }

        private DataRow GetRandowRow()
        {
            Random random = new Random();

            int rowIndex = random.Next(this.dataTable.Rows.Count - 1);

            return this.dataTable.Rows[rowIndex];
        }

        private void CreateDemodata()
        {
            DataColumn dataColumnA = new DataColumn(ColumnA, typeof(string));
            DataColumn dataColumnB = new DataColumn(ColumnB, typeof(string));
            DataColumn dataColumnC = new DataColumn(ColumnC, typeof(string));

            this.dataTable.Columns.AddRange(new DataColumn[] { dataColumnA, dataColumnB, dataColumnC });

            for (int i = 0; i < 20; i++)
            {
                DataRow dataRow = this.dataTable.NewRow();

                dataRow[ColumnA] = string.Format("A{0}", i);
                dataRow[ColumnB] = string.Format("B{0}", i);
                dataRow[ColumnC] = string.Format("C{0}", i);

                this.dataTable.Rows.Add(dataRow);
            }
        }
    }
Avatar billede jimgordon Nybegynder
05. december 2006 - 08:56 #2
DataSet ds = new DataSet();
            ds.Tables.Add();
            ds.Tables[0].Columns.Add("X", typeof(System.Double));
            ds.Tables[0].Columns.Add("Y", typeof(System.Double));
            ds.Tables[0].Columns.Add("Z", typeof(System.Double));

            for (int i = 0; i < 5; i++)
            {
                DataRow dr = ds.Tables[0].NewRow();
                dr["X"] = 10 * i;
                dr["Y"] = 20 * i;
                dr["Z"] = 30 * i;
                ds.Tables[0].Rows.Add(dr);
            }

            //ds.WriteXml(@"d:\test.xml");
            //<NewDataSet>
            //  <Table1>
            //    <X>0</X>
            //    <Y>0</Y>
            //    <Z>0</Z>
            //  </Table1>
            //  <Table1>
            //    <X>10</X>
            //    <Y>20</Y>
            //    <Z>30</Z>
            //  </Table1>
            //  <Table1>
            //    <X>20</X>
            //    <Y>40</Y>
            //    <Z>60</Z>
            //  </Table1>
            //  <Table1>
            //    <X>30</X>
            //    <Y>60</Y>
            //    <Z>90</Z>
            //  </Table1>
            //  <Table1>
            //    <X>40</X>
            //    <Y>80</Y>
            //    <Z>120</Z>
            //  </Table1>
            //</NewDataSet>
 
            // loop a given datarow columns
            DataRow drSome = ds.Tables[0].Rows[2];
                       
            foreach (DataColumn col in ds.Tables[0].Columns)
            {
                Console.WriteLine(drSome[col.ColumnName].ToString());
            }
           
            // Output
            // 20
            // 40
            // 60
Avatar billede bulgroz Nybegynder
05. december 2006 - 08:57 #3
GetRandowRow = GetRandomRow ;-)
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