您的位置:首页 > 其它

动态读取二进制图片并绑定CheckBox实现批量删除图片[原创]

2009-07-25 16:07 453 查看
实现功能:动态读取二进制图片并绑定CheckBox,然后在页面中选中一个或多个CheckBox实现批量删除。
难点:动态添加CheckBox的代码若没有放到Page_Load的if(!ispostback)里,则每次回发后,服务器都将重新加载checkbox,所以checkbox的CheckChanged事件将无法触发。
解决办法:在 Page_Init事件里利用ViewState保存一组信息(被选中的所有CheckBox的ID),同时,将所有动态添加的checkbox的AutoPostBack设为false。

实现效果如下:
protected void Page_Init(object sender, EventArgs e)
2 protected void DataBindToImage()
2 protected void cb_CheckedChanged(object sender, EventArgs e)
2 public void DeleteImg(string path)
3 {
4Code
protected void DeleteImage(object sender, EventArgs e) //---------------------删除勾选的图片------------------------------
{
int imgNum = Convert.ToInt32((((Button)sender)).CommandArgument);

//==---------------------------------------------------------------为了获取文物图片的编号
TwoMuseum.Entity.Heritage.文物图片查询Info 文物图片查询=new 文物图片查询Info();
文物图片查询.SetValue("文物编号",Request.QueryString["文物_ID"]);
文物图片查询.SetVisble("文物图片编号");
TwoMuseum.BLL.Heritage.文物图片 文物图片 = new 文物图片();
DataTable dt = 文物图片.Search(文物图片查询);
DataRow dr;

for (int i = imgNum-1; i >-1 ; i--)
{
if (ViewState["cb" + i.ToString()] != null)
//if (Check[i]!=null)
{
dr = dt.Rows[i];
string 文物图片_ID = dr["文物图片编号"].ToString();

if (文物图片.Delete(文物图片_ID).Vlus)
this.Panel1.Controls.Add(new LiteralControl("<font color=red>删除图片成功!</font><br>"));
else
this.Panel1.Controls.Add(new LiteralControl("<font color=red>删除图片失败,数据库操作发生错误!!</font>"));

}

}

DataBindToImage();
}
另外,图片绑定的函数在page_load里调用,但不包含在if(!IspostBack)内。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: