本篇将讲述如何解决GridView控件中使用CheckBox控件无法保存状态问题。由于我们开发的CheckBox控件在GridView控件的外部使用时可以保存状态,所以我的解决方案是:另外开发一个控件,用来保存在GridView控件中的CheckBox控件的状态。我将其命名为CheckBoxHidden控件。控件代码如下:
同时,应修改第一篇的CheckBox.js文件,增加如下两个函数:
1
using
System;
2
using
System.Web.UI;
3
using
System.Web.UI.WebControls;
4![](../../../Images/OutliningIndicators/None.gif)
5
namespace
HughLin.Web.UI.WebControls
6![](../../../Images/OutliningIndicators/ExpandedBlockStart.gif)
{
7
public class CheckBoxHidden : System.Web.UI.WebControls.HiddenField
8![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
9![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
10
/// 获取或设置控件所在的组名称
11
/// </summary>
12
public string Group
13![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
14
get
15![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
16
object obj1 = this.ViewState["Group"];
17
return (obj1 == null) ? string.Empty : (string)obj1;
18
}
19
set
20![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
21
this.ViewState["Group"] = value;
22
}
23
}
24![](../../../Images/OutliningIndicators/InBlock.gif)
25
protected override void OnPreRender(EventArgs e)
26![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
27
if (this.Visible && !string.IsNullOrEmpty(this.Group))
28![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
29
if (!this.Page.ClientScript.IsClientScriptIncludeRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
30![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
31
this.Page.ClientScript.RegisterClientScriptResource(typeof(CheckBox), "HughLin.CheckBox.js");
32
}
33
if (!this.Page.ClientScript.IsOnSubmitStatementRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
34![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
35
this.Page.ClientScript.RegisterOnSubmitStatement(typeof(CheckBox), "HughLin.CheckBox.js", "AspNetV2_SaveCheckBoxGroupValue('" + this.Group + "', '" + this.ClientID + "')");
36
}
37
if (!this.Page.ClientScript.IsStartupScriptRegistered(typeof(CheckBox), "HughLin.CheckBox.js"))
38![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
39
this.Page.ClientScript.RegisterStartupScript(typeof(CheckBox), "HughLin.CheckBox.js", "\r\n<script language='javascript'>\nAspNetV2_RestoreCheckBoxGroupValue('" + this.Group + "', '" + this.ClientID + "');\n</script>\n");
40
}
41
}
42
base.OnPreRender(e);
43
}
44
}
45
}
![](../../../Images/OutliningIndicators/None.gif)
2
![](../../../Images/OutliningIndicators/None.gif)
3
![](../../../Images/OutliningIndicators/None.gif)
4
![](../../../Images/OutliningIndicators/None.gif)
5
![](../../../Images/OutliningIndicators/None.gif)
6
![](../../../Images/OutliningIndicators/ExpandedBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
7
![](../../../Images/OutliningIndicators/InBlock.gif)
8
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
9
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
10
![](../../../Images/OutliningIndicators/InBlock.gif)
11
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
12
![](../../../Images/OutliningIndicators/InBlock.gif)
13
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
14
![](../../../Images/OutliningIndicators/InBlock.gif)
15
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
16
![](../../../Images/OutliningIndicators/InBlock.gif)
17
![](../../../Images/OutliningIndicators/InBlock.gif)
18
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](../../../Images/OutliningIndicators/InBlock.gif)
20
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
21
![](../../../Images/OutliningIndicators/InBlock.gif)
22
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](../../../Images/OutliningIndicators/InBlock.gif)
25
![](../../../Images/OutliningIndicators/InBlock.gif)
26
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
27
![](../../../Images/OutliningIndicators/InBlock.gif)
28
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
29
![](../../../Images/OutliningIndicators/InBlock.gif)
30
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
31
![](../../../Images/OutliningIndicators/InBlock.gif)
32
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](../../../Images/OutliningIndicators/InBlock.gif)
34
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
35
![](../../../Images/OutliningIndicators/InBlock.gif)
36
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](../../../Images/OutliningIndicators/InBlock.gif)
38
![](../../../Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](../../../Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
39
![](../../../Images/OutliningIndicators/InBlock.gif)
40
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](../../../Images/OutliningIndicators/InBlock.gif)
43
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](../../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](../../../Images/OutliningIndicators/ExpandedBlockEnd.gif)
1
function
AspNetV2_RestoreCheckBoxGroupValue(group, clientId)
2
{
3
var
objArray;
4
try
5
{
6
objArray
=
eval(group);
7
}
8
catch
(e)
9
{
10
return
;
11
}
12
if
(objArray
==
null
||
objArray.length
==
0
)
13
{
14
return
;
15
}
16
var
flag
=
false
;
17
var
objArray2
=
document.getElementById(clientId);
18
if
(objArray2
==
null
||
objArray2.value.length
==
0
)
19
{
20
flag
=
true
;
21
}
22
if
(flag)
23
{
24
for
(
var
i
=
0
; i
<
objArray.length; i
++
)
25
{
26
var
e
=
objArray[i];
27
e.checked
=
false
;
28
}
29
}
30
else
31
{
32
var
objArray3
=
objArray2.value.split(
"
,
"
);
33
for
(
var
i
=
0
; i
<
objArray.length; i
++
)
34
{
35
var
e
=
objArray[i];
36
var
flag1
=
(objArray3[i].toLowerCase()
==
"
true
"
)
?
true
:
false
;
37
e.checked
=
flag1;
38
}
39
}
40
}
41![](../../../Images/OutliningIndicators/None.gif)
42
function
AspNetV2_SaveCheckBoxGroupValue(group, clientId)
43
{
44
var
objArray;
45
try
46
{
47
objArray
=
eval(group);
48
}
49
catch
(e)
50
{
51
return
;
52
}
53
if
(objArray
==
null
||
objArray.length
==
0
)
54
{
55
return
;
56
}
57
var
objValues
=
objArray[
0
].checked;
58
for
(
var
i
=
1
; i
<
objArray.length; i
++
)
59
{
60
var
e
=
objArray[i];
61
objValues
+=
"
,
"
+
objArray[i].checked;
62
}
63
document.getElementById(clientId).value
=
objValues;
64
}
![](../../../Images/OutliningIndicators/None.gif)
2
![](../../../Images/OutliningIndicators/None.gif)
3
![](../../../Images/OutliningIndicators/None.gif)
4
![](../../../Images/OutliningIndicators/None.gif)
5
![](../../../Images/OutliningIndicators/None.gif)
6
![](../../../Images/OutliningIndicators/None.gif)
7
![](../../../Images/OutliningIndicators/None.gif)
8
![](../../../Images/OutliningIndicators/None.gif)
9
![](../../../Images/OutliningIndicators/None.gif)
10
![](../../../Images/OutliningIndicators/None.gif)
11
![](../../../Images/OutliningIndicators/None.gif)
12
![](../../../Images/OutliningIndicators/None.gif)
13
![](../../../Images/OutliningIndicators/None.gif)
14
![](../../../Images/OutliningIndicators/None.gif)
15
![](../../../Images/OutliningIndicators/None.gif)
16
![](../../../Images/OutliningIndicators/None.gif)
17
![](../../../Images/OutliningIndicators/None.gif)
18
![](../../../Images/OutliningIndicators/None.gif)
19
![](../../../Images/OutliningIndicators/None.gif)
20
![](../../../Images/OutliningIndicators/None.gif)
21
![](../../../Images/OutliningIndicators/None.gif)
22
![](../../../Images/OutliningIndicators/None.gif)
23
![](../../../Images/OutliningIndicators/None.gif)
24
![](../../../Images/OutliningIndicators/None.gif)
25
![](../../../Images/OutliningIndicators/None.gif)
26
![](../../../Images/OutliningIndicators/None.gif)
27
![](../../../Images/OutliningIndicators/None.gif)
28
![](../../../Images/OutliningIndicators/None.gif)
29
![](../../../Images/OutliningIndicators/None.gif)
30
![](../../../Images/OutliningIndicators/None.gif)
31
![](../../../Images/OutliningIndicators/None.gif)
32
![](../../../Images/OutliningIndicators/None.gif)
33
![](../../../Images/OutliningIndicators/None.gif)
34
![](../../../Images/OutliningIndicators/None.gif)
35
![](../../../Images/OutliningIndicators/None.gif)
36
![](../../../Images/OutliningIndicators/None.gif)
37
![](../../../Images/OutliningIndicators/None.gif)
38
![](../../../Images/OutliningIndicators/None.gif)
39
![](../../../Images/OutliningIndicators/None.gif)
40
![](../../../Images/OutliningIndicators/None.gif)
41
![](../../../Images/OutliningIndicators/None.gif)
42
![](../../../Images/OutliningIndicators/None.gif)
43
![](../../../Images/OutliningIndicators/None.gif)
44
![](../../../Images/OutliningIndicators/None.gif)
45
![](../../../Images/OutliningIndicators/None.gif)
46
![](../../../Images/OutliningIndicators/None.gif)
47
![](../../../Images/OutliningIndicators/None.gif)
48
![](../../../Images/OutliningIndicators/None.gif)
49
![](../../../Images/OutliningIndicators/None.gif)
50
![](../../../Images/OutliningIndicators/None.gif)
51
![](../../../Images/OutliningIndicators/None.gif)
52
![](../../../Images/OutliningIndicators/None.gif)
53
![](../../../Images/OutliningIndicators/None.gif)
54
![](../../../Images/OutliningIndicators/None.gif)
55
![](../../../Images/OutliningIndicators/None.gif)
56
![](../../../Images/OutliningIndicators/None.gif)
57
![](../../../Images/OutliningIndicators/None.gif)
58
![](../../../Images/OutliningIndicators/None.gif)
59
![](../../../Images/OutliningIndicators/None.gif)
60
![](../../../Images/OutliningIndicators/None.gif)
61
![](../../../Images/OutliningIndicators/None.gif)
62
![](../../../Images/OutliningIndicators/None.gif)
63
![](../../../Images/OutliningIndicators/None.gif)
64
![](../../../Images/OutliningIndicators/None.gif)
同样我们将其编译到HughLin.dll中。
使用是我们只需要在第二篇中的代码中加入:
<hlAsp:CheckBoxHidden ID="CheckBoxHidden1" runat="server" Group="UserCheckBoxGroup1" />
注意:Group应当和你的CheckBox控件的Group要相同。
本系列中开发的CheckBox控件有一个好处就是:可以同时在多个GridView中使用,而互相不会干扰,只需设置Group的值不同即可。当然要保存多个GridView的CheckBox控件的状态,必须添加相应的ChekBoxHidden控件。