在ASP.NET中,我们会经常使用到GridView,在进行一些操作时,比如对选择项进行删除等操作,这个时候我们会添加复选框,如果我们想批量删除,该怎么办呢?
首先,我们需要在页面中添加一个隐藏域用来存储每行数据对应的ID:
<asp:HiddenField ID="hdfWPBH" runat="server" />
下面是用来显示数据的GridView:
<asp:GridView ID="GridView2" SkinID="GridView1" DataKeyNames="ID"
runat="server" onrowdatabound="GridView2_RowDataBound">
<RowStyle BackColor="#f2f2f2" />
<AlternatingRowStyle BackColor="#DCEEFA" />
<Columns>
<asp:TemplateField HeaderText="序号">
<HeaderTemplate>
<input type="checkbox" name="BoxIdAll" id="BoxIdAll" οnclick="onclicksel();" />
</HeaderTemplate>
<ItemTemplate>
<input id="BoxId" name="BoxId" value='<%#(Convert.ToString(Eval("ID")))%>' type="checkbox" />
</ItemTemplate>
<ItemStyle Height="25px" HorizontalAlign="Center" />
<HeaderStyle Width="3%" Height="28px" BackColor="#80B4CF" HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<font color="#000000" style="font-size: 10px">
<%#GetCountCK()%>
</font>
</ItemTemplate>
<ItemStyle Height="30px" HorizontalAlign="Center" />
<HeaderStyle Width="5%" Height="30px" BackColor="#80B4CF" HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="物品名称">
<ItemTemplate>
<%#strTrim(Convert.ToString(Eval("WPMC")))%>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
<HeaderStyle Width="13%" HorizontalAlign="center" BackColor="#80B4CF" />
</asp:TemplateField>
</Columns>
</asp:GridView>
还有一个用来完成审核的按钮:
<asp:ImageButton ID="imgAuditPass" runat="server" BorderColor="#FFCCCC"
BorderStyle="Solid" BorderWidth="1px" ImageUrl="~/CWQLC/images/sure.png"
οnclick="imgAuditPass_Click" ToolTip="点此完成信息审核" OnClientClick='return batchAudit(this.id)' />
效果图如下:
还需要添加一些Javascript代码:
Header区域的那个实现全选功能的复选框事件:
function onclicksel()
{
var chkobj = document.getElementById("BoxIdAll");
if(chkobj.checked == true)
{
selAll();
}
else
{
removeAll();
}
}
以下是调用的一些函数:
function selAll()
{
var selobj = document.getElementsByName("BoxId");
for(var i = 0; i < selobj.length; i++)
{
if (!selobj[i].disabled)
{
selobj[i].checked = true;
}
}
}
function removeAll()
{
var selobj = document.getElementsByName("BoxId");
for(var i = 0; i < selobj.length; i++)
{
selobj[i].checked = false;
}
}
“审核通过"按钮的客户端事件(OnClientClick='return batchAudit(this.id)')实现客户端验证,Javascript代码:
function batchAudit(id)
{
var AuditVal = "";
var bid = document.getElementsByName("BoxId");
for(var i = 0; i < bid.length; i++)
{
if(bid[i].checked == true)
{
AuditVal = AuditVal + bid[i].value + ",";
}
}
if(AuditVal.length <= 0)
{
alert("请先选择要审核的项");
return false;
}
else
{
if(id == "btnDelete")
{
if(confirm("您确认要审核吗?"))
{
document.getElementById("hdfWPBH").value = AuditVal;
return true;
}
return false;
}
}
}
在后台.cs”审核通过“按钮单击事件(οnclick="imgAuditPass_Click")C#代码:
protected void imgAuditPass_Click(object sender, ImageClickEventArgs e)
{
string[] chkIds = null;
string batchRegroup = Request.Form["hdfWPBH"].ToString().Trim().TrimEnd(',');//通过这种方式来获得前台隐藏域的内容
if (batchRegroup.Length != 0)
{
chkIds = batchRegroup.Split(',');
}
string sql = "";
for (int i = 0; i < chkIds.Length; i++)
{
sql = "UPDATE T_WPXX_CK SET SPR='" + userrealName + "' WHERE ID='" + chkIds[i] + "'";
wpck.auditOrDelete(sql);//传入SQL语句并执行
}
ClientScript.RegisterStartupScript(this.GetType(), "pass", "alert('审核通过!');", true);
GridViewShow_CK();//GridView绑定数据显示方法
}
这样,只要单击"审核通过"按钮,就能把复选框所选中的那一行的ID放入隐藏域中,只要confirm("您确认要审核吗?")选择"是",即可调用后台的onclike事件并执行