【知识要点】
(1)学习多条记录删除
(2)模板列
【问题提出】
同时删除多条记录如何实现?
【在线指导】
我们虽然已经学会了删除单条记录,但在软件项目中我们更愿意一次删除多条记录,这是我们常见而且也乐意做的,相对来说,难度有点大,但是下点功夫还是容易搞定的。
难点有二:(1)模板列的学习与使用;(2)获取模板列的值。
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“SqlDeleteMulti.aspx”页面。
(3)从工具箱中拖1个GridView到SqlDeleteMulti.aspx页面。
第一步、GridView控件ID属性分别为:gvClient
第二步、选择GridView,单击“>”箭头按钮,添加模板列
第三步、设置模板列,单击“编辑模板”。
第四步、为ItemTemplate添加复选框,从工具箱中拖一个复选框至上图ItemTemplate黄色区域。并命名为cbClientCode。
第五步、为ItemTemplate添加文本框,从工具箱中拖一个文本框至上图ItemTemplate黄色区域。并命名为tbClientCode,设置其Visible属性为False。
注:下面这一步至关重要的,别忘了!到源码把Text属性设为:<%# Eval("cClientCode") %>
第六步、为HeaderTemplate添加按钮,从工具箱中拖一个按钮至HeaderTemplate棕色区域。并命名为btnDelete,CommandArgument属性为“Delete”。
第七步、结束模板编辑,回到GridView界面。
第八步、选择GridView,双击RowCommand后面,设置gvClient_RowCommand事件。
2、添加代码
(1)双击页面上的“空白”部分。
我们在Page_Load()中间输入:
//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//打开
Conn.Open();
//填充DataSet
string ClientSql = "SELECT * FROM Client";
SqlDataAdapter Adapter = new SqlDataAdapter(ClientSql, Conn);
DataSet Ds = new DataSet();
Adapter.Fill(Ds, "Client");
//执行命令
gvClient.DataSource = Ds.Tables["Client"];
gvClient.DataBind();
//关闭数据库
Conn.Close();
(2)我们为gvClient_RowCommand()添加代码
我们在gvClient_RowCommand(object sender, GridViewCommandEventArgs e)中间输入:
注:请你看清楚,是在gvClient_RowCommand()中间输入,而不是Page_Load()。
string Condition = "";
string DelSql = "";
string LastCondition = "";
if (e.CommandArgument == "Delete")
{
for (int i = 0; i <= gvClient.Rows.Count - 1; i++)
{
CheckBox cbMyID = (CheckBox)gvClient.Rows[i].FindControl("cbClientCode");
if (cbMyID.Checked == true)
{
TextBox tbMyID = (TextBox)gvClient.Rows[i].FindControl("tbClientCode");
Condition = Condition + tbMyID.Text.Trim() + ",";
int Len = Condition.Length;
LastCondition = Condition.Substring(0, Len - 1);
}
}
}
//删除语句
DelSql = "DELETE FROM Client WHERE nID IN(" + LastCondition + ")";
//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//打开
Conn.Open();
SqlCommand Comm = new SqlCommand(DelSql, Conn);
Comm.ExecuteNonQuery();
//关闭数据库
Conn.Close();
讲解:
注意体会本种写法的妙处。
(2)从“解决方案资源管理器”中,选择“SqlDeleteMulti.aspx”,单击右键“在浏览器中查看”。
验证:选择多个客户之后,单击“删除”按钮,我们发现确实从数据库中删除了。