【发布时间】:2013-12-03 05:24:45
【问题描述】:
我正在创建一个允许用户将文件上传到服务器的应用程序。一旦他们上传了站点管理员,就会有一个管理页面,用于查看所有上传的文件、下载文件、删除文件并将文件“标记”为已读。我的文件上传功能正常工作,并将信息插入 SQL 数据库(文件名、ID、文件路径、标记和日期)。我还使用“删除”和“读取”按钮在网格视图中正确显示数据。
我的问题是在单击删除按钮时删除条目。我怎样才能最好地提取行的 ID,以便在 SQL 中成功创建 DELETE 语句?
一些代码:
admin.aspx
<asp:GridView runat="server" ID="results" AutoGenerateColumns="false" onrowcommand="results_BtnClick">
<columns>
<asp:BoundField DataField="id" HeaderText="ID" />
<asp:BoundField DataField="date" HeaderText="Date" />
<asp:BoundField DataField="filename" HeaderText="File Name"/>
<asp:HyperLinkField DataNavigateUrlFields="filePath" Text="Download" />
<asp:ButtonField ButtonType="Button" Text="Delete" CommandName="del" />
<asp:ButtonField ButtonType="Button" Text="Read?" CommandName="Check" />
<asp:BoundField DataField="checked" HeaderText="Read Status?" />
</columns>
</asp:GridView>
admin.aspx.cs
protected void results_BtnClick(object sender, GridViewCommandEventArgs e)
{
if (IsPostBack)
{
DbConn dbConn = new DbConn();
//SQL = "SELECT * FROM databasename";
//ds = new DataSet();
//ds = dbConn.createDataSet(SQL);
//DataTable dt = new DataTable();
//dt = ds.Tables[0];
if (e.CommandName == "del")
{
/*
* Do Delete
*/
SqlConnection oConn = new SqlConnection(dbConn.connStr);
SQL = "DELETE FROM databasename WHERE id=@id";
SqlCommand oCmd = new SqlCommand();
oCmd = new SqlCommand(SQL);
oCmd.Connection = oConn;
oCmd.Parameters.Add(new SqlParameter("@id", System.Data.SqlDbType.Int, 4));
oCmd.Parameters["@id"].Value = Convert.ToInt32(e.CommandArgument);
oConn.Open();
oCmd.ExecuteNonQuery();
oConn.Close();
sel_All(sender, e);
}
else if (e.CommandName == "Check")
{
/*
* Do Check Yes
*/
SqlConnection oConn = new SqlConnection(dbConn.connStr);
SQL = "UPDATE databasename SET checked=@check WHERE id=@id";
SqlCommand oCmd = new SqlCommand();
oCmd = new SqlCommand(SQL);
oCmd.Connection = oConn;
oCmd.Parameters.Add(new SqlParameter("@id", System.Data.SqlDbType.Int, 4));
oCmd.Parameters.Add(new SqlParameter("@check", System.Data.SqlDbType.VarChar, 50));
oCmd.Parameters["@id"].Value = Convert.ToInt32(e.CommandArgument) + 1;
oCmd.Parameters["@check"].Value = "Yes";
oConn.Open();
oCmd.ExecuteNonQuery();
oConn.Close();
sel_All(sender, e);
}
}
我已经四处寻找有关如何执行此操作的想法,但我的 googlefu 很弱。任何帮助将不胜感激。
【问题讨论】:
标签: c# asp.net sql file-upload delete-row