在DataGrid中做了个CheckBox控件组全选,以及能针对具休CheckBox进行操作的应用.
1.在DataGrid中添加模板列(可手工HTML也可属性生成器)
2.在模板中添加CheckBox(CB)控件,在HeaderTemplate中加入一CB(这里取ID为cb,在ItemTemplate中加入CB,
此CB将作为DG的一组 CB(这里置ID为cbOp).
此处须将cb的AutoPostBack属性设为True,并为OnCheckChanged事件指定一函数( 不知此指定可否在隐藏代码文件中做),这里为SelectAll().
做完以上后,前端显示文件如下:
public void SelectAll(object sender,System.EventArgs e)
{
CheckBox cba = (CheckBox)sender;
if(cba.ID=="cb")
{
foreach(DataGridItem dgi in dgPl.Items)
{
CheckBox cbs=(CheckBox)dgi.FindControl("cbOp");
cbs.Checked=cba.Checked;
}
}
}
1.在DataGrid中添加模板列(可手工HTML也可属性生成器)
2.在模板中添加CheckBox(CB)控件,在HeaderTemplate中加入一CB(这里取ID为cb,在ItemTemplate中加入CB,
此CB将作为DG的一组 CB(这里置ID为cbOp).
此处须将cb的AutoPostBack属性设为True,并为OnCheckChanged事件指定一函数( 不知此指定可否在隐藏代码文件中做),这里为SelectAll().
做完以上后,前端显示文件如下:
1
<asp:datagrid id="dgPl" style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 48px" runat="server"
2
ForeColor="Black" GridLines="Vertical" CellPadding="3" BackColor="White" BorderWidth="1px"
3
BorderColor="#999999" AllowPaging="True" AutoGenerateColumns="False" Height="256px" Width="816px"
4
Font-Size="Smaller" BorderStyle="Solid">
5
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
6
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
7
<HeaderStyle Font-Size="Smaller" Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
8
<FooterStyle BackColor="#CCCCCC"></FooterStyle>
9
<Columns>
10
<asp:HyperLinkColumn DataTextField="bookname" HeaderText="评论商品名称"></asp:HyperLinkColumn>
11
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="pinglunid" DataNavigateUrlFormatString="pinglun.aspx?id={0}" DataTextField="pingluntitle" HeaderText="评论标题"></asp:HyperLinkColumn>
12
<asp:BoundColumn DataField="pinglundate" HeaderText="评论时间"></asp:BoundColumn>
13
<asp:TemplateColumn HeaderText="操 作">
14
<HeaderTemplate>
15
<asp:CheckBox id="cb" runat="server" OnCheckedChanged="SelectAll" AutoPostBack="True" Text="全选"></asp:CheckBox>
16
</HeaderTemplate>
17
<ItemTemplate>
18
<asp:CheckBox id="cbOp" runat="server"></asp:CheckBox>
19
</ItemTemplate>
20
</asp:TemplateColumn>
21
<asp:BoundColumn Visible="False" DataField="pinglunid" HeaderText="plid"></asp:BoundColumn>
22
</Columns>
23
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
24
</asp:datagrid>
25
26
<asp:datagrid id="dgPl" style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 48px" runat="server"2
ForeColor="Black" GridLines="Vertical" CellPadding="3" BackColor="White" BorderWidth="1px"3
BorderColor="#999999" AllowPaging="True" AutoGenerateColumns="False" Height="256px" Width="816px"4
Font-Size="Smaller" BorderStyle="Solid">5
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>6
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>7
<HeaderStyle Font-Size="Smaller" Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>8
<FooterStyle BackColor="#CCCCCC"></FooterStyle>9
<Columns>10
<asp:HyperLinkColumn DataTextField="bookname" HeaderText="评论商品名称"></asp:HyperLinkColumn>11
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="pinglunid" DataNavigateUrlFormatString="pinglun.aspx?id={0}" DataTextField="pingluntitle" HeaderText="评论标题"></asp:HyperLinkColumn>12
<asp:BoundColumn DataField="pinglundate" HeaderText="评论时间"></asp:BoundColumn>13
<asp:TemplateColumn HeaderText="操 作">14
<HeaderTemplate>15
<asp:CheckBox id="cb" runat="server" OnCheckedChanged="SelectAll" AutoPostBack="True" Text="全选"></asp:CheckBox>16
</HeaderTemplate>17
<ItemTemplate>18
<asp:CheckBox id="cbOp" runat="server"></asp:CheckBox>19
</ItemTemplate>20
</asp:TemplateColumn>21
<asp:BoundColumn Visible="False" DataField="pinglunid" HeaderText="plid"></asp:BoundColumn>22
</Columns>23
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>24
</asp:datagrid>25

26

3.在隐藏代码文件中定义OnCheckedChanged事件函数.
通过遍历DataGrid中第条记录来实现
ID为cb的CB,因是单一控件,可以通过cb找到,而ID为cbOp者是一组控件,须DataGrid的FindControl()方法而指定.
此为dgi.FindControl("cbOp");
函数如下:
public void SelectAll(object sender,System.EventArgs e)
{
CheckBox cba = (CheckBox)sender;
if(cba.ID=="cb")
{
foreach(DataGridItem dgi in dgPl.Items)
{
CheckBox cbs=(CheckBox)dgi.FindControl("cbOp");
cbs.Checked=cba.Checked;
}
}
}
4.而要操作DataGrid中的记录(如删除),可以通过遍历记录,判断是否Checked来进行,
几本上同 步骤3
如下:
1
private void btDel_Click(object sender, System.EventArgs e)
2
{
3
4
foreach(DataGridItem dgi in dgPl.Items)
5
{
6
CheckBox cb = (CheckBox)dgi.FindControl("cbOp");
7
if(cb.Checked)
8
{
9
int nID = int.Parse(dgi.Cells[4].Text);
10
scom.CommandText="delete from shop_pinglun where pinglunid=@pPlid";
11
scom.Parameters.Clear();
12
scom.Parameters.Add("@pPlid",nID);
13
scon.Open();
14
scom.ExecuteNonQuery();
15
scon.Close();
16
17
}
18
19
}
20
dgPl.CurrentPageIndex=0;
21
dgPl_bind(int.Parse(ddlPl.SelectedItem.Value));
22
23
}
24
25
private void btDel_Click(object sender, System.EventArgs e)2
{3

4
foreach(DataGridItem dgi in dgPl.Items)5
{6
CheckBox cb = (CheckBox)dgi.FindControl("cbOp");7
if(cb.Checked)8
{9
int nID = int.Parse(dgi.Cells[4].Text);10
scom.CommandText="delete from shop_pinglun where pinglunid=@pPlid";11
scom.Parameters.Clear();12
scom.Parameters.Add("@pPlid",nID);13
scon.Open();14
scom.ExecuteNonQuery();15
scon.Close();16
17
}18

19
}20
dgPl.CurrentPageIndex=0;21
dgPl_bind(int.Parse(ddlPl.SelectedItem.Value));22

23
}24

25

总结:
可见,在DataGrid中,要操作组控件,通过FindContro() 与ID属性进行是一种行之有效的方法

浙公网安备 33010602011771号