动态读取二进制图片并绑定CheckBox实现批量删除图片[原创]
实现功能:动态读取二进制图片并绑定CheckBox,然后在页面中选中一个或多个CheckBox实现批量删除。
难点:动态添加CheckBox的代码若没有放到Page_Load的if(!ispostback)里,则每次回发后,服务器都将重新加载checkbox,所以checkbox的CheckChanged事件将无法触发。
解决办法:在 Page_Init事件里利用ViewState保存一组信息(被选中的所有CheckBox的ID),同时,将所有动态添加的checkbox的AutoPostBack设为false。
实现效果如下:
![](https://images.cnblogs.com/cnblogs_com/linderman/士大夫是的.jpg)
Html代码:
Code
后台部分代码如下:
1.Page_Init
2.DataBindToImage()函数
3.所有checkbox共同的事件cb_CheckedChanged:
4.另外,因为读取的图片都是二进制形式,所以每次都是将图片先转换到临时文件夹,然后在处理
因而,必须在读取图片前先对临时图片文件夹进行清空操作,以免读取了错误的图片,清空的函数如下:
5.删除图片的按钮ActiveButton的事件
Code
另外,图片绑定的函数在page_load里调用,但不包含在if(!IspostBack)内。。
难点:动态添加CheckBox的代码若没有放到Page_Load的if(!ispostback)里,则每次回发后,服务器都将重新加载checkbox,所以checkbox的CheckChanged事件将无法触发。
解决办法:在 Page_Init事件里利用ViewState保存一组信息(被选中的所有CheckBox的ID),同时,将所有动态添加的checkbox的AutoPostBack设为false。
实现效果如下:
![](https://images.cnblogs.com/cnblogs_com/linderman/士大夫是的.jpg)
Html代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
后台部分代码如下:
1.Page_Init
1
protected void Page_Init(object sender, EventArgs e)
2
{
3
for (int i = 0; i < 6; i++)
4
{
5
ViewState["cb" + i.ToString()] = Request.Form["cb" + i.ToString()];
6
}
7
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
2.DataBindToImage()函数
1
protected void DataBindToImage()
2
{
3
this.Panel1.Controls.Add(new LiteralControl("<font size=3><center>文物已保存有如下图片:</center></font><br>"));
4
文物 obj = new 文物();
5
object[] Pics = obj.GetPics(Convert.ToInt32(Request.QueryString["文物_ID"]));
6
TwoMuseum.BLL.Heritage.文物图片 it3 = new TwoMuseum.BLL.Heritage.文物图片();
7![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
int i = Pics.Length-1;
9![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
while (i>-1 )
11
{
12
Image im = new Image();
13
im.ID = i.ToString();//
14
15
//it3.writeFile((byte[])Pics[i], "UI\\pic\\Heritage" + i.ToString() + ".jpg");
16
//im.ImageUrl = "~/pic/Heritage" + i.ToString() + ".jpg";
17![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
it3.writeFile((byte[])Pics[i], Server.MapPath(".") + "/pic/Heritage" + i.ToString() + ".jpg");
19
im.ImageUrl = "~/pic/Heritage" + i.ToString() + ".jpg";
20![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
CheckBox cb = new CheckBox();
22
cb.Text = "选中删除";
23
cb.Font.Size = System.Web.UI.WebControls.FontUnit.Small;
24
cb.ID = "cb"+i.ToString();//
25
cb.Checked = false;
26
cb.AutoPostBack = false;
27
cb.CheckedChanged+=new EventHandler(cb_CheckedChanged);
28
cb.Attributes.Add("value",i.ToString());
29
//cb.Attributes.Add("onclick", "javascript:check(this,"+Check+")");
30![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
this.Panel1.Controls.Add(im);
32
this.Panel1.Controls.Add(cb);
33
if (0 == i % 2)
34
this.Panel1.Controls.Add(new LiteralControl("<br><br>"));
35
36
//this.Panel1.Controls.Add(new LiteralControl(";nbsp ;nbsp ;nbsp ;nbsp ;nbsp ;nbsp ;nbsp "));
37
38
i--;
39
}
40![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
this.ActiveButton.Visible = true;
42
this.ActiveButton.Attributes.Add("onclick", "javascript:return confirm('你确认要删除所有选中图片吗?')");
43
44
if (Pics.Length > 0)
45
{
46
this.Panel1.Controls.Add(new LiteralControl("<br>"));
47
this.Panel1.Controls.Add(new LiteralControl("<br>"));
48
49
this.ActiveButton.CommandArgument = Pics.Length.ToString();//--------------为按钮添加属性
50
}
51![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
this.Label10.Text = ViewState["文物名称"].ToString();
53
for (int i2 = 0; i2 < 6; i2++)
54
{
55
Flag[i2] = false;
56
}
57
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
3.所有checkbox共同的事件cb_CheckedChanged:
1
protected void cb_CheckedChanged(object sender, EventArgs e)
2
{
3
Response.Write("点击了CheckBox!!");
4![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
CheckBox cbx=(CheckBox)sender;
6
if (cbx.Checked)
7
{
8
string Cid=cbx.ID.ToString().Substring(2,1);
9
ViewState["cb" + Cid] = 1;
10![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
}
12
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
4.另外,因为读取的图片都是二进制形式,所以每次都是将图片先转换到临时文件夹,然后在处理
因而,必须在读取图片前先对临时图片文件夹进行清空操作,以免读取了错误的图片,清空的函数如下:
1
///------------------------------删除文件夹内图片-----------------------------
2
public void DeleteImg(string path)
3
{
4
string FilePath = path;
5
for (int i = 0; i < 6; i++)
6
{
7
FilePath = path + i.ToString() + ".jpg";
8
if (File.Exists(FilePath)) //------------- 判断,如果存在就删除
9
File.Delete(FilePath);
10
11
FilePath =path + "Heritage" + i.ToString() + ".jpg";
12
if (File.Exists(FilePath)) //------------- 判断,如果存在就删除
13
File.Delete(FilePath);
14
}
15
}
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
5.删除图片的按钮ActiveButton的事件
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
另外,图片绑定的函数在page_load里调用,但不包含在if(!IspostBack)内。。