aspx.cs文件
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gvAssetInfoQueryInit();//设定allowpaging,pagesize
}
//全选的客户端实现
string sChkHeader = gvAssetInfoQuery.HeaderRow.FindControl("chkHeader").ClientID.ToString();
((CheckBox)gvAssetInfoQuery.HeaderRow.FindControl("chkHeader")).Attributes.Add("onclick", "javascript:SetCheckedUnchecked('" + sChkHeader + "');");
}aspx文件
function SetCheckedUnchecked(checkAllId){
var oCheckAll = document.getElementById(checkAllId);
var oState = oCheckAll.checked;
var elems=document.Form1.elements;
for(i=0;i<elems.length;i++){
if(elems[i].type=="checkbox" && elems[i].id!= oCheckAll.id)
{
if(elems[i].checked!=oState)
elems[i].click();
}
}
}
<GridView...>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20px" />
<HeaderTemplate>
<asp:CheckBox id="chkHeader" runat="server" AutoPostBack="False"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkDelete" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</GridView>
在!IsPostBack的情况下,模版列的全选是没有问题的。但是如果是IsPostBack的情况(例如点击“编辑”),就会出现点击头模版,其它的checkbox不能全选。查看html源码,发现里面根本没有Attribute.Add函数,请问这是怎么回事?
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
gvAssetInfoQueryInit();//设定allowpaging,pagesize
}
//全选的客户端实现
string sChkHeader = gvAssetInfoQuery.HeaderRow.FindControl("chkHeader").ClientID.ToString();
((CheckBox)gvAssetInfoQuery.HeaderRow.FindControl("chkHeader")).Attributes.Add("onclick", "javascript:SetCheckedUnchecked('" + sChkHeader + "');");
}aspx文件
function SetCheckedUnchecked(checkAllId){
var oCheckAll = document.getElementById(checkAllId);
var oState = oCheckAll.checked;
var elems=document.Form1.elements;
for(i=0;i<elems.length;i++){
if(elems[i].type=="checkbox" && elems[i].id!= oCheckAll.id)
{
if(elems[i].checked!=oState)
elems[i].click();
}
}
}
<GridView...>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20px" />
<HeaderTemplate>
<asp:CheckBox id="chkHeader" runat="server" AutoPostBack="False"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkDelete" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</GridView>
在!IsPostBack的情况下,模版列的全选是没有问题的。但是如果是IsPostBack的情况(例如点击“编辑”),就会出现点击头模版,其它的checkbox不能全选。查看html源码,发现里面根本没有Attribute.Add函数,请问这是怎么回事?
在aspx写全选函数,在Aspx页面调用。
{
var a=document.getElementsByTagName("input");
for(var j=0;j<a.length;j++)
{
if(a[j].type=="checkbox")
a[j].checked=document.all.CheckAll.checked;
}
}如果还有某些复选框要加以限制,可以加属性用以判断,如a[j].type=="checkbox"
<GridView...>
<asp:TemplateField>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20px" />
<HeaderTemplate>
<input type="checkbox" name="myCheck" value="<%# Container.DataItemIndex %>">
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkDelete" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</GridView>
服务器端 Request.Form("myCheck")取得行号