2017-06-12 175 views
-1

我有一個3列的Gridview,我在'ADD'按鈕的幫助下添加空行。現在我試圖將輸入到網格中的數據插入到我的表中。這是我的代碼。將數據從數據表插入到數據庫的問題#

SqlConnection con = new SqlConnection(ConfigurationManager 
    .ConnectionStrings["gridconnection"] 
    .ConnectionString); 
public void SetInitialRow() 
{ 
    DataTable dt = new DataTable(); 
    DataRow dr = null; 
    //dt.Columns.Add(new DataColumn("RowNumber", typeof(string))); 
    dt.Columns.Add(new DataColumn("Column1", typeof(string))); 
    dt.Columns.Add(new DataColumn("Column2", typeof(string))); 
    dt.Columns.Add(new DataColumn("Column3", typeof(string))); 
    dr = dt.NewRow(); 
    // dr["RowNumber"] = 1; 
    dr["Column1"] = string.Empty; 
    dr["Column2"] = string.Empty; 
    dr["Column3"] = string.Empty; 
    dt.Rows.Add(dr); 

    //Store the DataTable in ViewState 
    ViewState["CurrentTable"] = dt; 

    Gridview1.DataSource = dt; 
    Gridview1.DataBind(); 
} 

public void AddNewRowToGrid() 
{ 
    int rowIndex = 0; 

    if (ViewState["CurrentTable"] != null) 
    { 
     DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"]; 
     DataRow drCurrentRow = null; 
     if (dtCurrentTable.Rows.Count > 0) 
     { 
      for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
      { 
       //extract the TextBox values 
       TextBox box1 = (TextBox)Gridview1.Rows[rowIndex] 
        .Cells[1].FindControl("TextBox1"); 
       TextBox box2 = (TextBox)Gridview1.Rows[rowIndex] 
        .Cells[2].FindControl("TextBox2"); 
       TextBox box3 = (TextBox)Gridview1.Rows[rowIndex] 
        .Cells[3].FindControl("TextBox3"); 

       drCurrentRow = dtCurrentTable.NewRow(); 
       drCurrentRow["RowNumber"] = i + 1; 

       dtCurrentTable.Rows[i - 1]["Column1"] = box1.Text; 
       dtCurrentTable.Rows[i - 1]["Column2"] = box2.Text; 
       dtCurrentTable.Rows[i - 1]["Column3"] = box3.Text; 

       rowIndex++; 
      } 
      dtCurrentTable.Rows.Add(drCurrentRow); 
      ViewState["CurrentTable"] = dtCurrentTable; 

      Gridview1.DataSource = dtCurrentTable; 
      Gridview1.DataBind(); 
     } 
    } 
    else 
    { 
     Response.Write("ViewState is null"); 
    } 

    //Set Previous Data on Postbacks 
    SetPreviousData(); 
} 

protected void SetPreviousData() 
{ 
    int rowIndex = 0; 
    if (ViewState["CurrentTable"] != null) 
    { 
     DataTable dt = (DataTable)ViewState["CurrentTable"]; 
     if (dt.Rows.Count > 0) 
     { 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       TextBox box1 = (TextBox)Gridview1.Rows[rowIndex] 
        .Cells[1].FindControl("TextBox1"); 
       TextBox box2 = (TextBox)Gridview1.Rows[rowIndex] 
        .Cells[2].FindControl("TextBox2"); 
       TextBox box3 = (TextBox)Gridview1.Rows[rowIndex] 
        .Cells[3].FindControl("TextBox3"); 

       box1.Text = dt.Rows[i]["Column1"].ToString(); 
       box2.Text = dt.Rows[i]["Column2"].ToString(); 
       box3.Text = dt.Rows[i]["Column3"].ToString(); 

       rowIndex++; 
      } 
     } 
    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     SetInitialRow(); 
    } 
} 

protected void ButtonAdd_Click(object sender, EventArgs e) 
{ 
    AddNewRowToGrid(); 
} 

protected void ButtonAdd_Click1(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 

    DataRow dr = null; 

    dt.Columns.Add(new DataColumn("Column1", typeof(string))); 
    dt.Columns.Add(new DataColumn("Column2", typeof(string))); 
    dt.Columns.Add(new DataColumn("Column3", typeof(string))); 
    dr = dt.NewRow(); 
    string consString = ConfigurationManager.ConnectionStrings["gridconnection"] 
     .ConnectionString; 
    using (SqlConnection connection = new SqlConnection(consString)) 
    { 
     connection.Open(); 
     using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) 
     { 
      //foreach (DataColumn c in dt.Columns) 
      // // bulkCopy.ColumnMappings.Add(c.Column1, c.Column2, c.Column3); 

      bulkCopy.DestinationTableName = "GridExcel"; 
      //bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3); 
      SqlBulkCopyColumnMapping Column = 
       new SqlBulkCopyColumnMapping("Column1", "Column1"); 
      bulkCopy.ColumnMappings.Add(Column); 
      SqlBulkCopyColumnMapping Column2nd = 
       new SqlBulkCopyColumnMapping("Column2", "Column2"); 
      bulkCopy.ColumnMappings.Add(Column2nd); 
      SqlBulkCopyColumnMapping Column3rd = 
       new SqlBulkCopyColumnMapping("Column3", "Column3"); 
      bulkCopy.ColumnMappings.Add(Column3rd); 
      try 
      { 
       bulkCopy.WriteToServer(dt); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
     } 
    } 
} 

GridExcel是我的數據庫表名,列名爲Column1,Column2,Column3。問題是數據沒有被插入到表中。請幫忙。

+1

您是否收到任何錯誤消息? –

+0

@VarunBabuPozhath否 – nirmala

+0

您的Add方法創建一個空的DataTable,而不是從ViewState中檢索數據 – Scrobi

回答

0
protected void ButtonAdd_Click1(object sender, EventArgs e) 
{ 
    if (ViewState["CurrentTable"] != null) 
     { 
     DataTable dt = (DataTable)ViewState["CurrentTable"];  
     if (dt.Rows.Count > 0) 
     { 
      string consString = ConfigurationManager.ConnectionStrings["gridconnection"] 
       .ConnectionString; 
      using (SqlConnection connection = new SqlConnection(consString)) 
      { 
       connection.Open(); 
       using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) 
       { 
        //foreach (DataColumn c in dt.Columns) 
        // // bulkCopy.ColumnMappings.Add(c.Column1, c.Column2, c.Column3); 

        bulkCopy.DestinationTableName = "GridExcel"; 
        //bulkCopy.ColumnMappings.Add(Column1, c.Column2, c.Column3); 
        SqlBulkCopyColumnMapping Column = 
         new SqlBulkCopyColumnMapping("Column1", "Column1"); 
        bulkCopy.ColumnMappings.Add(Column); 
        SqlBulkCopyColumnMapping Column2nd = 
         new SqlBulkCopyColumnMapping("Column2", "Column2"); 
        bulkCopy.ColumnMappings.Add(Column2nd); 
        SqlBulkCopyColumnMapping Column3rd = 
         new SqlBulkCopyColumnMapping("Column3", "Column3"); 
        bulkCopy.ColumnMappings.Add(Column3rd); 
        try 
        { 
         bulkCopy.WriteToServer(dt); 
        } 
        catch (Exception ex) 
        { 
         Console.WriteLine(ex.Message); 
        } 
       } 
      } 
     } 
    } 
} 

我不熟悉與ASP.Net但更新您的ButtonAdd_Click1,這可能會解決您的問題,這是工作的罰款,並解決您的問題,請檢查該