2015-03-25 48 views
0

我想在用戶上傳文件的時候創建一個功能,其名稱和描述將顯示在gridview中。FileUpload及其更新狀態

現在這裏我想要的是,如果同一個文件有一些變化,它需要重新上傳和第二次上傳。我將會再添加一列作爲FileRevision,這將顯示文件已更新的次數。

供您參考,請參閱圖像: -

Image for ref

不要讓我從哪裏開始知道。

+0

WTH是「更新用」? – 2015-03-25 06:45:02

+0

@SamAxe:更新是,文件已被更新了多少次 – 2015-03-25 06:46:02

+0

那麼,什麼是問題? – Amit 2015-03-25 06:46:05

回答

0

我得到了它由我自己完成的,如下圖所示: -

FileUpload ControlASPX頁面

<asp:FileUpload ID="fupreportfile" runat="server" CssClass="form-control" ValidationGroup="AddNew" /> 

現在,按鈕單擊它會檢查文件中是否存在與否。檢查thorugh CS代碼: -

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
      SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString); 
      using (SqlCommand cmd = conn.CreateCommand()) 
      { 
       if (fupreportfile.HasFiles) 
       { 
        int count = CheckFileExists(fupreportfile.PostedFile.FileName); 
        fupreportfile.SaveAs(Server.MapPath("~/ReportFolder/" + fupreportfile.PostedFile.FileName)); 

        if (count > 0) 
        { 
         cmd.CommandText = " Update tbl_reports SET [email protected] Where [email protected]"; 
         cmd.Parameters.AddWithValue("@Id", GetIdByFileName(fupreportfile.PostedFile.FileName)); 
         cmd.Parameters.Add("@revision", SqlDbType.VarChar).Value = (count + 1).ToString(); 
         cmd.Connection = conn; 
         conn.Open(); 
         cmd.ExecuteNonQuery(); 
         conn.Close(); 
         ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Reports updated sucessfully');window.location ='csrreports.aspx';", true); 
        } 
        else 
        { 
         conn.Open(); 
         SqlCommand cmd1 = new SqlCommand("Insert into tbl_reports (NgoId,report_type_id,report_title,report_file,report_desc,revision) values(@NgoId, @report_type_id, @report_title,@report_file,@report_desc,@revision)", conn); 
         cmd1.Parameters.Add("@NgoId", SqlDbType.Int).Value = ddlNgoName.SelectedValue; 
         cmd1.Parameters.Add("@report_type_id", SqlDbType.Int).Value = ddlReportType.SelectedValue; 
         cmd1.Parameters.Add("@report_title", SqlDbType.NVarChar).Value = txtreporttitle.Text; 
         cmd1.Parameters.Add("@report_file", SqlDbType.VarChar).Value = fupreportfile.PostedFile.FileName; 
         cmd1.Parameters.Add("@report_desc", SqlDbType.NVarChar).Value = txtreportdescription.Text; 
         cmd1.Parameters.Add("@revision", SqlDbType.VarChar).Value = (count + 1).ToString(); 
         cmd1.ExecuteNonQuery(); 
         conn.Close(); 
         ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Reports added sucessfully');window.location ='csrreports.aspx';", true); 
        } 
       } 
      } 
    } 

代碼檢查文件: -

public int CheckFileExists(string fileName) 
    { 
     using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM tbl_reports WHERE [email protected]_file", con); 
      cmd.Parameters.Add("@report_file", SqlDbType.VarChar).Value = fileName; 
      con.Open(); 
      int count = (int)cmd.ExecuteScalar(); 
      return count; 
     } 
    } 

另外,我需要檢查該行正在更新ID。因此,對於該代碼是

public int GetIdByFileName(string fileName) 
    { 
     using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("SELECT Id FROM tbl_reports WHERE [email protected]_file", con); 
      cmd.Parameters.Add("@report_file", SqlDbType.VarChar).Value = fileName; 
      con.Open(); 
      int count = (int)cmd.ExecuteScalar(); 
      return count; 
     } 
    } 

我檢查這個和它的工作對我來說:)