如何gridview的行添加到DataTable? [英] How to add gridview rows to a datatable?

查看:195
本文介绍了如何gridview的行添加到DataTable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个gridview其中将包含行的一些'N'号....现在我想在GridView的所有行添加到DataTable将被用于bulkcopy操作...



我发现这个 HTTP://www.codeproject。 COM / KB / ASPNET / GridView_To_DataTable.aspx



但我想我的GridView的所有列添加到DataTable
的数据行< IMG SRC =htt​​p://img85.imageshack.us/img85/4044/gridp.jpgALT =网格>



我要GridView控件转换为数据表在提交....任何建议...



编辑:



回答下面的作品,我已经找到了答案太...

  DataTable的DT =新的DataTable(); 
dt.Columns.Add(新的DataColumn(EMPID的typeof(Int64的)));
dt.Columns.Add(新的DataColumn(寄件者的typeof(DateTime的)));
dt.Columns.Add(新的DataColumn(TODATE的typeof(DateTime的)));
dt.Columns.Add(新的DataColumn(DaysPresent的typeof(双)));
dt.Columns.Add(新的DataColumn(OpeningAdvance的typeof(双)));
dt.Columns.Add(新的DataColumn(AdvanceDeducted的typeof(双)));
dt.Columns.Add(新的DataColumn(RemainingAdvance的typeof(双)));
dt.Columns.Add(新的DataColumn(SalaryGiven的typeof(双)));
dt.Columns.Add(新的DataColumn(CreatedDate的typeof(DateTime的)));

的foreach(GridViewRow行gridEmployee.Rows)
{
如果(row.RowType == DataControlRowType.DataRow)
{
的DataRow博士= DT .NewRow();
博士[EMPID] = Convert.ToInt64(((HiddenField)row.Cells [0] .FindControl(HiddenId))值。);
博士[寄件者] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(寄件者[1]的ToString())+'/'+寄件者[0]的ToString()+'/'+寄件者[2]的ToString ());
博士[TODATE] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(TODATE [1]的ToString())+'/'+ TODATE [0]的ToString()+'/'+ TODATE [2]的ToString ());
博士[DaysPresent] = Convert.ToDouble(((文本框)row.Cells [3] .FindControl(TxtDaysPresent))文本。);
博士[OpeningAdvance] = Convert.ToDouble(((文本框)row.Cells [4] .FindControl(txtOpeningAdv))文本。);
博士[AdvanceDeducted] = Convert.ToDouble(((文本框)row.Cells [5] .FindControl(TxtAdvanceDeducted))文本。);
博士[RemainingAdvance] = Convert.ToDouble(((文本框)row.Cells [6] .FindControl(TxtClosingAdvance))文本。);
博士[SalaryGiven] = Convert.ToDouble(((文本框)row.Cells [7] .FindControl(TxtSalary))文本。);
博士[CreatedDate] = Convert.ToDateTime(System.DateTime.Now.ToString());
dt.Rows.Add(DR);
}
}
SqlBulkCopy的SBC =新SqlBulkCopy的(的connectionString);
sbc.DestinationTableName =SalaryDetails;
sbc.ColumnMappings.Add(EMPID,EMPID);
sbc.ColumnMappings.Add(寄件者,寄件者);
sbc.ColumnMappings.Add(TODATE,TODATE);
sbc.ColumnMappings.Add(DaysPresent,DaysPresent);
sbc.ColumnMappings.Add(OpeningAdvance,OpeningAdvance);
sbc.ColumnMappings.Add(AdvanceDeducted,AdvanceDeducted);
sbc.ColumnMappings.Add(RemainingAdvance,RemainingAdvance);
sbc.ColumnMappings.Add(SalaryGiven,SalaryGiven);
sbc.ColumnMappings.Add(CreatedDate,CreatedDate);
sbc.WriteToServer(DT);
sbc.Close();


解决方案

您可以按行遍历DataGrid行,使一个逗号分隔的文件。然后使用大容量插入或BCP将数据插入到数据库。



另一个解决方案



  DataTable的DT =新的DataTable(); 
为(INT J = 0; J< grdList.Rows.Count; J ++)
{
DataRow的博士;
GridViewRow行= grdList.Rows [J]。
博士= dt.NewRow();
的for(int i = 0; I< row.Cells.Count;我++)
{
博士[I] = row.Cells [I]。文本;
}

dt.Rows.Add(DR);
}

SqlBulkCopy的SBC =新SqlBulkCopy的(targetConnStr);
sbc.DestinationTableName =yourDestinationTable;
sbc.WriteToServer(DT);
sbc.Close();


I have a gridview which will contain some 'n' number of rows.... Now i want to add all rows of the gridview to a datatable which will be used for bulkcopy operation...

I have found this http://www.codeproject.com/KB/aspnet/GridView_To_DataTable.aspx

But i want all columns of my gridview to be added to the datarow of the datatable

I want to convert gridview to datatable on submit.... Any suggestion...

EDIT:

Answer below works and i have found an answer too...

    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("EmpId", typeof(Int64)));
    dt.Columns.Add(new DataColumn("FromDate", typeof(DateTime)));
    dt.Columns.Add(new DataColumn("ToDate", typeof(DateTime)));
    dt.Columns.Add(new DataColumn("DaysPresent", typeof(double)));
    dt.Columns.Add(new DataColumn("OpeningAdvance", typeof(double)));
    dt.Columns.Add(new DataColumn("AdvanceDeducted", typeof(double)));
    dt.Columns.Add(new DataColumn("RemainingAdvance", typeof(double)));
    dt.Columns.Add(new DataColumn("SalaryGiven", typeof(double)));
    dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime)));

    foreach (GridViewRow row in gridEmployee.Rows) 
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            DataRow dr = dt.NewRow();
            dr["EmpId"] = Convert.ToInt64(((HiddenField)row.Cells[0].FindControl("HiddenId")).Value);
            dr["FromDate"] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(fromdate[1].ToString()) + '/' + fromdate[0].ToString() + '/' + fromdate[2].ToString());
            dr["ToDate"] = Convert.ToDateTime(GetMonthNumberFromAbbreviation(todate[1].ToString()) + '/' + todate[0].ToString() + '/' + todate[2].ToString());
            dr["DaysPresent"] = Convert.ToDouble(((TextBox)row.Cells[3].FindControl("TxtDaysPresent")).Text);
            dr["OpeningAdvance"] = Convert.ToDouble(((TextBox)row.Cells[4].FindControl("txtOpeningAdv")).Text);
            dr["AdvanceDeducted"] = Convert.ToDouble(((TextBox)row.Cells[5].FindControl("TxtAdvanceDeducted")).Text);
            dr["RemainingAdvance"] = Convert.ToDouble(((TextBox)row.Cells[6].FindControl("TxtClosingAdvance")).Text);
            dr["SalaryGiven"] = Convert.ToDouble(((TextBox)row.Cells[7].FindControl("TxtSalary")).Text);
            dr["CreatedDate"] = Convert.ToDateTime(System.DateTime.Now.ToString());
            dt.Rows.Add(dr);
        }
    }
    SqlBulkCopy sbc = new SqlBulkCopy(connectionString);
    sbc.DestinationTableName = "SalaryDetails";
    sbc.ColumnMappings.Add("EmpId", "EmpId");
    sbc.ColumnMappings.Add("FromDate", "FromDate");
    sbc.ColumnMappings.Add("ToDate", "ToDate");
    sbc.ColumnMappings.Add("DaysPresent", "DaysPresent");
    sbc.ColumnMappings.Add("OpeningAdvance", "OpeningAdvance");
    sbc.ColumnMappings.Add("AdvanceDeducted", "AdvanceDeducted");
    sbc.ColumnMappings.Add("RemainingAdvance", "RemainingAdvance");
    sbc.ColumnMappings.Add("SalaryGiven", "SalaryGiven");
    sbc.ColumnMappings.Add("CreatedDate", "CreatedDate");
    sbc.WriteToServer(dt);
    sbc.Close();

解决方案

you can traverse datagrid row by row and make a comma separated file. then use Bulk insert or bcp for inserting data to db.

Another Solution

    DataTable dt = new DataTable();    
    for (int j = 0; j < grdList.Rows.Count; j++)
    {
        DataRow dr;
        GridViewRow row = grdList.Rows[j];
        dr = dt.NewRow();
        for (int i = 0; i < row.Cells.Count; i++)
        {
            dr[i] = row.Cells[i].Text;
        }

        dt.Rows.Add(dr);
    }

SqlBulkCopy sbc = new SqlBulkCopy(targetConnStr);
sbc.DestinationTableName = "yourDestinationTable";
sbc.WriteToServer(dt);
sbc.Close();

这篇关于如何gridview的行添加到DataTable?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆