























之前从网上借鉴了一个方法,在gridview中添加全选与不选批处理.但是不支持firefox 文章地址
所以弄了个方法,现在以下的方法支持ff,已经测试通过
aspx代码
后台绑定gridview_rowDataBound事件
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
case DataControlRowType.DataRow:
CheckBox chkItem = (CheckBox)e.Row.FindControl("chkItem");
chkItem.Attributes.Add("onclick", String.Format("checkTopCheckbox('{0}')", this.GridView1.ClientID));
break;case DataControlRowType.Header:
CheckBox chkSelectAll = (CheckBox)e.Row.FindControl("chkSelectAll");
chkSelectAll.Attributes.Add("onclick", String.Format("checkAllCheckboxes(this,'{0}')", this.GridView1.ClientID));
break;
}
}
获取select选择项的值:
protected void btnCheckBatch_Click(object sender, EventArgs e)
{
string aa = "";
foreach (GridViewRow _listItem in this.GridView1.Rows) //获取所选项
{
CheckBox chkbox = (CheckBox)_listItem.FindControl("chkItem");
if (chkbox.Checked)
{
int _Id = Convert.ToInt32(this.GridView1.DataKeys[_listItem.RowIndex].Value);
//处理数据操作
aa += _Id.ToString() + ",";
}
}
Response.Write(aa);
}
忘了加上没有选择项的时候按钮javascript提示了
在aspx 也的<script> 中加入
// 判断多选是否与选中项(没有选中的返回false)
function slcNo_click(controlName)
{
var _checkbox;
var i = 2;
//_checkboxAll.checked=(_isChecked);
while (document.getElementById(controlName + '_ctl' + getIDString(i) + '_chkItem')) {
_checkbox = document.getElementById(controlName + '_ctl' + getIDString(i) + '_chkItem')
if (_checkbox.type == 'checkbox') {
if (_checkbox.checked) return true;
i++;
}
} // while
alert("请选择后再操作!");
return false;
}
再在后台cs文件Page_Load事件中加入
btnCheckBatch.Attributes.Add("onclick", String.Format("return slcNo_click('{0}')", this.GridView1.ClientID));
这样就可以在没有选择任何项进行操作时弹出客户端提示不进行后台批量操作了。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。