将数据表绑定到网格视图,但行编辑事件在网格视图中不起作用
本文关键字:网格 视图 编辑 事件 不起作用 数据表 绑定 | 更新日期: 2023-09-27 18:35:39
我正在制作一个导入器,它最初会将 excel 上传到一个文件夹,然后我将向用户显示(我将在验证后将该数据放入数据表中并将其显示给用户以进行任何更新或删除)。用户将验证一切似乎都很好,然后单击保存按钮,数据将被保存到数据库表中。现在我心里有疑问。
-
首先将数据放入数据表中并将其显示给用户以进行更新或删除是否是一个好主意或方法。
-
其次,我在网格视图中显示数据,以便用户编辑或删除数据表中的任何行。
-
当我第一次单击编辑链接时,我遇到了问题,它什么也不做。实际上,我必须在编辑链接上单击两次,然后网格视图进入编辑模式。我已经用谷歌搜索了这个问题,他们说我必须将网格视图与数据源重新绑定。现在的问题是当我在行编辑事件上重新绑定它时,数据表对象为 null。那怎么办。我已经在下面粘贴了我的代码。
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 设置为上传的数据,然后设置编辑索引,然后将网格视图绑定到未修改的 Dt 变量。
从那里开始,希望其余的会到位。
我的问题通过根据需要调整流程来解决。现在我只是从 excel 文件中读取数据并验证它,就像列的数据类型应该正确,所以不应该有未定义的值,然后将其插入数据库表中,如果有任何验证错误,我向用户显示一条消息,即 excel 文件的单元格 # 中输入错误。