-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。問題是數據沒有被插入到表中。請幫忙。
您是否收到任何錯誤消息? –
@VarunBabuPozhath否 – nirmala
您的Add方法創建一個空的DataTable,而不是從ViewState中檢索數據 – Scrobi