<HeaderTemplate>
<asp:CheckBox ID="cbAll" runat="server" AutoPostBack="True" OnCheckedChanged="CheckAll" Text="全选/取消" ToolTip="全选/取消全选" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbSelect" runat="server" ToolTip="选择" />
<input id="hidid" type="hidden" runat="server" value='<%# Eval("ID") %>' />
</ItemTemplate>
protected void gvBillDetail_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox cbox = (CheckBox)e.Row.FindControl("cbSelect");
//这里的处理是为了回显之前选中的情况
if (this.SelectedItems != null)
{
HtmlInputHidden hidid = (HtmlInputHidden)e.Row.FindControl("hidid");
if (this.SelectedItems.Contains(hidid.Value))
{
cbox.Checked = true;
}
else
{
cbox.Checked = false;
}
}
}
if (e.Row.RowType == DataControlRowType.Header)
{
DataTable dtPPS = (DataTable)ViewState["dtPPS"];
CheckBox mycbAll = (CheckBox)e.Row.FindControl("cbAll");
if (mycbAll != null && this.SelectedItems.Count == dtPPS.Rows.Count)
{
mycbAll.Checked = true;
}
}
}
/// <summary>
/// 从当前页收集选中项的情况
/// </summary>
protected void CollectSelected()
{
ArrayList mySelectedItems = null;
if (this.SelectedItems == null)
mySelectedItems = new ArrayList();
else
mySelectedItems = this.SelectedItems;
for (int i = 0; i < this.gvBillDetail.Rows.Count; i++)
{
string id = ((HtmlInputHidden)this.gvBillDetail.Rows[i].FindControl("hidid")).Value;
CheckBox cb = this.gvBillDetail.Rows[i].FindControl("cbSelect") as CheckBox;
if (mySelectedItems.Contains(id) && !cb.Checked)
mySelectedItems.Remove(id);
if (!mySelectedItems.Contains(id) && cb.Checked)
mySelectedItems.Add(id);
}
this.SelectedItems = mySelectedItems;
}
protected void gvBillDetail_DataBinding(object sender, EventArgs e)
{
//在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
CollectSelected();
}
//实现全选功能
protected void CheckAll(object sender, EventArgs e)
{
CheckBox cbAll = (CheckBox)sender;
for (int i = 0; i <= gvBillDetail.Rows.Count - 1; i++)
{
CheckBox cbox = (CheckBox)gvBillDetail.Rows[i].FindControl("cbSelect");
if (cbox != null)
{
if (cbAll.Checked == true)
{
cbox.Checked = true;
}
else
{
cbox.Checked = false;
}
}
}
ArrayList mySelectedItems = new ArrayList();
DataTable dtPPS = (DataTable)ViewState["dtPPS"];
for (int i = 0; i < dtPPS.Rows.Count; i++)
{
if (dtPPS.Rows[i]["Status"].ToString() == "1")
{
string id = dtPPS.Rows[i]["ID"].ToString();
if (cbAll.Checked == true && !mySelectedItems.Contains(id))
{
mySelectedItems.Add(id);
}
if (cbAll.Checked == false && mySelectedItems.Contains(id))
{
mySelectedItems.Remove(id);
}
}
}
this.SelectedItems = mySelectedItems;
}