开发者

Add a column to a dataset in .net 1.1

开发者 https://www.devze.com 2023-02-02 07:44 出处:网络
I have dataset (dataset name dsEmp) with 25 columns, here I need to add a new column with columname of EndDate ofdata type as string.

I have dataset (dataset name dsEmp) with 25 columns, here I need to add a new column with columname of EndDate of data type as string.

I need to import all the data from column 18 whose datatype开发者_开发问答 is datetime to the newly created datacolumn EndDate. Once we import all the data from column 18 to the newcolumn EndDate, we should remove the column 18.


Is this what you are looking for:

        DataSet ds = new DataSet();
        DataTable dtt = new DataTable();

        ds.Tables.Add(dtt);

        // simulate required columns
        dtt.Columns.Add("col1", typeof(int));
        dtt.Columns.Add("col2", typeof(string));
        //...
        dtt.Columns.Add("col18", typeof(DateTime));

        // pupulate with dummy date
        for (int index = 0; index < 100; index++)
        {
            dtt.Rows.Add(index, "val" + index.ToString(), DateTime.Now.AddMinutes(index));
        }

        // add new column
        DataColumn colEndDate = new DataColumn("EndDate", typeof(DateTime));
        dtt.Columns.Add(colEndDate);

        // get old column reference
        DataColumn colOld18 = dtt.Columns["col18"];

        // loop thru all rows
        foreach (DataRow row in dtt.Rows)
        {
            // store value from old column to new column
            row[colEndDate] = Convert.ToDateTime(row[colOld18]).ToShortDateString();
            // or
            row[colEndDate] = Convert.ToDateTime(row[colOld18]).ToString("MM/dd/yyyy hh:mm:ss");
        }

        // remove old column
        dtt.Columns.Remove(colOld18);

        dtt.AcceptChanges();


@Prince I have prepared a small class for you so that you can us it to do the things you want. Hope it will be as per your requirement. Wanted to post this answer yesterday only but was busy in my work.


    class TestAddRemoveCol
    {
        /// 
        /// Adds the passed column to a datatable at a particular location
        /// 
        /// 
        /// 
        /// 
        /// 
        public DataTable AddCol(DataSet ds, string colName, Type type, int location)
        {
            DataTable dt = new DataTable();
            int colIndex = 0;
            DataColumn dc2 = null;

            foreach (DataColumn item in ds.Tables[0].Columns)
            {
                if (colIndex == location)
                {
                    dc2 = new DataColumn();
                    dc2.ColumnName = colName;
                    dc2.DataType = type;

                    dt.Columns.Add(dc2);
                }

                dc2 = new DataColumn();
                dc2.ColumnName = item.ColumnName;
                dc2.DataType = item.DataType;

                dt.Columns.Add(dc2);
                colIndex++;
            }

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                dt.ImportRow(dr);
            }

            return dt;
        }

        /// 
        /// returns a datacolumn with type string
        /// 
        /// 
        /// 
        /// 
        public DataTable CopyCol(DataTable dt, string oldColName, string newColName)
        {
            DataTable dt2 = dt.Copy();

            for (int i = 0; i 
        /// Removes column from a particular location
        /// 
        /// 
        /// 
        public void RemoveCol(DataTable dt, string colName)
        {
            //Remove column with a particular name
            dt.Columns.Remove(colName);

            //OR

            //Remove column at a particular index
            //ds.Tables[0].Columns.RemoveAt(index);
        }
    }

You can use this class as below.



                //Test Add/Remove Col
                //Create dummy dataset for testing
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                DataColumn dc = new DataColumn("col1", typeof(DateTime));
                dt.Columns.Add(dc);

                dc = new DataColumn("col2", typeof(DateTime));
                dt.Columns.Add(dc);

                dc = new DataColumn("col3", typeof(DateTime));
                dt.Columns.Add(dc);

                dc = new DataColumn("col4", typeof(DateTime));
                dt.Columns.Add(dc);

                DataRow dr = dt.NewRow();
                dr[0] = Convert.ToDateTime("01/01/2011");
                dr[1] = Convert.ToDateTime("02/01/2011");
                dr[2] = Convert.ToDateTime("03/01/2011");
                dr[3] = Convert.ToDateTime("04/01/2011");

                dt.Rows.Add(dr);
                ds.Tables.Add(dt);

                //Create object of the class
                TestAddRemoveCol obj = new TestAddRemoveCol();

                //Add column at the specific location in the dataset
                DataTable dt2 = obj.AddCol(ds, "EndDate", typeof(String), 2);

                //Copy data from one column to another
                DataTable dt3 = obj.CopyCol(dt2, "col3", "EndDate");

                //Remove column with the specific name
                obj.RemoveCol(dt3, "col3");

I have checked the code and it works fine. Also this code will work in .net 1.1.

Regards,

Samar

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号