これまでのコードはここにあります。テーブルは正しく塗りつぶされています。しかし、どのように私は、有効なテーブルに編集行を挿入し、それを編集テーブルから削除することができますか?名前、電子メール、およびモバイルの3つの列しか含まれていないExcelシートからテーブルをインポートしたため、プライマリキーがありません。更新ボタンをクリックした後、新しいデータセットに新しいデータセットを挿入して古いデータセットから削除したい
これは私がこれまで持っているものです。
protected void GridView4_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="Update")
{
DataSet EditT = new DataSet();
DataSet ValidT = new DataSet();
if (Session["Edit"] != null)
{
EditT = (DataSet)Session["Edit"];
}
if (Session["Valid"] != null)
{
ValidT = (DataSet)Session["Valid"];
}
DataTable dtEdit = EditT.Tables[0];
DataTable dtValid = ValidT.Tables[0];
}
}
、あなたは私がここにExcelシートをアップロードしたかを確認したい場合は、コードです:
protected void UploadBtn_Click(object sender, EventArgs e)
{
string filename = string.Empty;
if(FileUpload1.HasFile)
{
try
{
string[] allowFile = { ".xls", ".xlsx" };
string fileExt = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
bool isVaidFile = allowFile.Contains(fileExt);
if (!isVaidFile)
{
MessageLbl.ForeColor = System.Drawing.Color.Red;
MessageLbl.Text = "Must be an Excel file";
}
else
{
int fileSize = FileUpload1.PostedFile.ContentLength;
if (fileSize <= 1048576)
{
filename = Path.GetFileName(Server.MapPath(FileUpload1.FileName));
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/UploadExcel/") + filename);
string filePath = Server.MapPath("~/UploadExcel/") + filename;
OleDbConnection con = null;
if (fileExt == ".xls")
{
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";");
}
else if (fileExt == ".xlsx")
{
con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";");
}
con.Open();
DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dt.Rows[0]["Table_Name"].ToString();
string ExcelCommandText = @" SELECT * FROM [" + getExcelSheetName + @"]";
string ValidExcelCommandText = @"SELECT * FROM [" + getExcelSheetName + @"] where ((Email like '%@_%.com') and (Name is not null) and not (ISNUMERIC(Mobile) = 0))";
string EditExcelCommandText = @" SELECT * FROM [" + getExcelSheetName + @"] where Email not like '%@_%.com' or Email is null or Name is null or Mobile is null or Mobile not like '^[[:digit:]]+$'";
OleDbCommand ExcelCommand = new OleDbCommand(ExcelCommandText, con);
OleDbCommand EditExcelCommand = new OleDbCommand(EditExcelCommandText, con);
OleDbCommand ValidExcelCommand = new OleDbCommand(ValidExcelCommandText, con);
OleDbDataAdapter EditAdapter = new OleDbDataAdapter(EditExcelCommand);
OleDbDataAdapter ValidAdapter = new OleDbDataAdapter(ValidExcelCommand);
OleDbDataAdapter ExcelAdapter = new OleDbDataAdapter(ExcelCommand);
DataSet ExcelDataSet = new DataSet();
DataSet EditDataSet = new DataSet();
DataSet ValidDataset = new DataSet();
Session["Edit"] = EditDataSet;
Session["Valid"] = ValidDataset;
EditAdapter.Fill(EditDataSet);
ValidAdapter.Fill(ValidDataset);
ExcelAdapter.Fill(ExcelDataSet);
con.Close();
GridView5.DataSource = ValidDataset;
GridView4.DataSource = EditDataSet;
GridView3.DataSource = ExcelDataSet;
GridView3.DataBind();
GridView4.DataBind();
GridView5.DataBind();
}
else
{
MessageLbl.Text = "Attachment file size should not be greater than 1 MB";
}
}
}
catch (Exception ex)
{
MessageLbl.Text = "Error occurred while uploading file. " + ex.Message;
}
}
else
{
MessageLbl.Text = "";
}
}
また、更新された行も起動されていますが、何も書かれていないので、「GridView 'GridView4'が処理されたイベントのRowUpdatingを処理しました。 – ytba92
は、基本的に私は現在だけdtEdit – ytba92
更新されていない私は、コードのこの部分をしようとしているにこだわっている: 'foreachの(行中のDataRow行) { 行[「名前」] =((テキストボックス)GridView4.FindControl ( "textBox1"))。 rows ["Email"] =((TextBox)GridView4.FindControl( "textBox2"))。テキスト。 rows ["Mobile"] =((TextBox)GridView4.FindControl( "textBox3"))。テキスト。 } dtValid.Rows.Add(row.ItemArray); ' – ytba92