【发布时间】:2014-12-29 20:42:40
【问题描述】:
我正在制作一个导入器,它最初会将 excel 上传到一个文件夹,然后我将向用户显示(我将在验证后将该数据放入数据表并显示给用户以进行任何编辑/更新或删除)该数据给用户.当用户验证一切看起来都很好时,用户应该点击保存按钮,数据将被保存到数据库表中。现在我有问题了。
- 首先将数据放入数据表中并显示给用户进行更新或删除是一个好主意或方法吗?
- 其次,我在 gridview 中显示数据,以便用户编辑或删除数据表中的任何行。
-
当我第一次单击编辑时遇到问题,它什么也没做。实际上我必须在编辑链接上单击两次,然后 gridview 进入编辑模式。我有谷歌这个问题,他们说我必须用数据源重新绑定gridview........现在问题是当我在rowediting事件上重新绑定它时数据表对象为空。那么该怎么办。我在下面粘贴了我的代码。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.IO; using System.Data.SqlClient; using System.Data.OleDb; public partial class ImportExcelToDatabase : System.Web.UI.Page{ DataSet ds; DataTable Dt; protected void Page_Load(object sender, EventArgs e) { } protected void btnIpload_Click(object sender, EventArgs e) { ImporttoDatatable(); } private void ImporttoDatatable() { try { if (FlUploadcsv.HasFile) { string FileName = FlUploadcsv.FileName; string path = string.Concat(Server.MapPath("~/Document/" + FlUploadcsv.FileName)); FlUploadcsv.PostedFile.SaveAs(path); OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;"); OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", OleDbcon); OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd); ds = new DataSet(); //Dt.Clear(); ds.Clear(); objAdapter1.Fill(ds); Dt = ds.Tables[0]; DataColumn dc = Dt.Columns.Add("Ser", typeof(Int32)); int count = 0; foreach (DataRow item in Dt.Rows) { count++; item["Ser"] = count; } gvEmployee.DataSource = Dt; gvEmployee.DataBind(); } } catch (Exception ex) { } } protected void gvEmployee_RowUpdating(object sender, GridViewUpdateEventArgs e) { } protected void gvEmployee_RowEditing(object sender, GridViewEditEventArgs e) { gvEmployee.EditIndex = e.NewEditIndex; gvEmployee.DataSource = Dt; gvEmployee.DataBind(); } protected void gvEmployee_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvEmployee.EditIndex = -1; gvEmployee.DataSource = Dt; gvEmployee.DataBind(); }}
【问题讨论】:
-
您是说当您单击“编辑”按钮时页面正在回发并且数据表
Dt设置为空?因此,您必须将 Datatable 存储为 Session 或类似...
标签: c# asp.net gridview datatable