31. marts 2006 - 13:19Der er
18 kommentarer og 1 løsning
Prompt ved sletning af en fil
Jeg har en upload-fil program. Programmet består af en upload formular og et view, hvor man kan se, slette eller downloade alle uploadede filer. En del af programmet der sletter filer i oversigten ser sådan ud: private void DeleteFile(int fileId) { string cmdText = "DELETE FROM Files WHERE ID = @ID";
using(OleDbConnection con = new OleDbConnection(ConnectionString)) using(OleDbCommand cmd = new OleDbCommand(cmdText, con)) { cmd.Parameters.Add("@ID", OleDbType.Integer).Value = fileId; con.Open(); cmd.ExecuteNonQuery(); } Response.Redirect("default.aspx"); }
Det som jeg gerne ville have er, at et prompt spørger noget i denne retning: "Vil du virkelig slette denne fil?". På nuværende tidspunkt slettes bare filen ved at trykke på slet.
du skal have det f.eks. på en knap: <asp:Button ID="Button2" runat="server" OnClientClick="return confirm('Er du sikker på at du ønsker at slette ?');" OnClick="Slet_Click" Text="Slet" />
Der genereres et view og filnavn, slet og download er i form af tekst-link og der findes ikke noget knap. Heller ikke i aspx-fil. Koden som jeg har sendt er en del af file.aspx.cs. Der er 3 aspx filer. Alle bruger Codebehind og jeg kunne ikke finde noget kontrol for sletning bortset fra den som findes i Codebehind. Men file.aspx.cs indeholder også denne stumpe kode:
private void HandleFileAction(int fileId, string mode) { switch(mode) { case "view": ViewFile(fileId, false); break; case "delete": DeleteFile(fileId); break; case "download": ViewFile(fileId, true); break; default: Response.Redirect("default.aspx"); break; } }
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.OleDb;
rd.Close(); } } // Følgende metode skulle gerne komme med et promp "Vil du virkelig slette...", men det virker ikke // public void MsgBox(string msg) // { // Page.RegisterStartupScript("msg_script", String.Format("<script language='javascript'>alert('{0}');</script>", msg)); // } private void DeleteFile(int fileId) { // MsgBox("Vil du...!"); string cmdText = "DELETE FROM Files WHERE ID = @ID"; using(OleDbConnection con = new OleDbConnection(ConnectionString)) using(OleDbCommand cmd = new OleDbCommand(cmdText, con)) { cmd.Parameters.Add("@ID", OleDbType.Integer).Value = fileId; con.Open(); cmd.ExecuteNonQuery(); } Response.Redirect("default.aspx"); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // CODEGEN: This call is required by the ASP.NET Web Form Designer. InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Load += new EventHandler(this.Page_Load); this.Error += new EventHandler(this.Page_Error); } #endregion } }
Den kan den ikke rigtig. Når du går ind på aspx siden kan du vælge mellem design og html view i bunden af siden. her kan du se aspx koden. Det er den jeg skal bruge.
default.aspx.cs: --- using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Text; using System.Data.OleDb;
namespace Stardeveloper.UploadAccess { public class DefaultForm : GenericPage { protected const string CmdText = "SELECT ID, FileName, FileSize, ContentType, Dato FROM Files ORDER BY DATO DESC";
#region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load);
default.aspx.cs: --- using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Text; using System.Data.OleDb;
namespace Stardeveloper.UploadAccess { public class DefaultForm : GenericPage { protected const string CmdText = "SELECT ID, FileName, FileSize, ContentType, Dato FROM Files ORDER BY DATO DESC";
buffer.Append("<tr><td><a href=\"file.aspx?file_id="); buffer.Append(fileId); buffer.Append("&mode=view\">"); buffer.Append(fileName); buffer.Append("</a> | <a " onclick=\"return confirm('Er du sikker på at du ønsker at slette ?');\" href=\"file.aspx?file_id="); buffer.Append(fileId); buffer.Append("&mode=delete\">Slet</a> •"); buffer.Append(" <a href=\"file.aspx?file_id="); buffer.Append(fileId); buffer.Append("&mode=download\">Download</a> "); buffer.Append("</td><td align=\"center\">"); buffer.Append(fileLength); buffer.Append("</td><td align=\"center\">"); buffer.Append(contentType); buffer.Append("</td><td align=\"center\">"); buffer.Append(dato); buffer.Append("</td></tr>"); }
rd.Close(); buffer.Append("</table>"); }
return buffer.ToString(); }
#region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load);
Og den nye er: ..... buffer.Append("&mode=view\">"); buffer.Append(fileName); buffer.Append("</a> | <a " onclick=\"return confirm('Er du sikker på at du ønsker at slette ?');\" href=\"file.aspx?file_id="); buffer.Append(fileId); buffer.Append("&mode=delete\">Slet</a> •"); buffer.Append(" <a href=\"file.aspx?file_id="); .....
Jeg har tilføjet din kode, men desværre får jeg compileringsfejl: Der mangler ')' eller mangler ';' og lignende :-(
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.