Pertanyaan Bagaimana cara menambahkan baris gridview ke datatable?


Saya memiliki gridview yang akan berisi beberapa 'n' jumlah baris .... Sekarang saya ingin menambahkan semua baris dari gridview ke datatable yang akan digunakan untuk operasi bulkcopy ...

Saya telah menemukan ini http://www.codeproject.com/KB/aspnet/GridView_To_DataTable.aspx

Tetapi saya ingin semua kolom dari gridview saya untuk ditambahkan ke data terakhir dari datatable Kisi http://img85.imageshack.us/img85/4044/gridp.jpg

Saya ingin mengubah gridview ke datatable on submit .... Any suggestion ...

EDIT:

Jawaban di bawah ini bekerja dan saya telah menemukan jawaban juga ...

    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();

4
2018-02-25 06:26


asal


Jawaban:


Anda dapat melintasi baris datagrid demi baris dan membuat file yang dipisahkan koma. kemudian gunakan Bulk insert atau bcp untuk memasukkan data ke db.

Solusi Lain

    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();

2
2018-02-25 06:32