`
shirlly
  • 浏览: 1661164 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

JS调用C#后台代码---JS实现DataGrid“全选”、“反选”、调用后台代码批量删除数据

    博客分类:
  • .NET
阅读更多
以前做web,基本没用过啥JS,这短时间,公司里面接触到的JS蛮多的,他们叫我在DataGrid里面的CheckBox弄个“全选”,要用JS来实现,来实现批量删除,这个功能,直接用C#是很好实现的,直接遍历就可以把选中的ID全部取出来。JS,那就只能用Html的CheckBox,这个不是服务器控件,C#后台代码是无法访问了,所以,再网上找了点资料,实现了。

首先,先定义一个DataGrid控件,先添加一个模板列,里面放一个Html的CheckBox,属性name=ChoessAll,(name,JS代码后面要用到)ID=chkChoessAll,绑定数据的唯一标识,这里是ID。

html(.aspx)代码如下:
<asp:GridView ID="gvUint" runat="server" AutoGenerateColumns="False" Width="100%">
            <Columns>
                <asp:TemplateField HeaderText="选择">
                    <ItemTemplate>
                        <input id="chkChoessAll" name="ChoessAll" value=''<%# DataBinder.Eval(Container.DataItem, "ID")%>'' type="checkbox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="ID" HeaderText="楼盘名" />
                <asp:BoundField DataField="address" HeaderText="地址" />
            </Columns>
        </asp:GridView> 
 

添加一个HiddenField控件(Html控件)属性ID=hfId,(ID,JS代码后面要用到);选中的Check里面的数据的ID号。

现在实现JS代码:
<script type="text/javascript">
        //选择全部
        function CheckAll_Click()
        ...{
            if (document.form1.ChoessAll.length)
            ...{
                document.getElementById("hfId").value = ",";
                for (var i=0;i<document.form1.ChoessAll.length;i++)
                ...{
                    document.form1.ChoessAll[i].checked = true;
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + document.form1.ChoessAll[i].value;
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + ",";
                }
            }
            else
            ...{
               document.form1.ChoessAll.checked = true;
            }
            //document.getElementById("btnShowID").click();
        }
        //反选
        function CheckReChange_Click()
        ...{
            if (document.form1.ChoessAll.length)
            ...{
                document.getElementById("hfId").value = ",";
                for (var i=0;i<document.form1.ChoessAll.length;i++)
                ...{
                    if(document.form1.ChoessAll[i].checked)
                    ...{
                        document.form1.ChoessAll[i].checked = false;
                    }
                    else
                    ...{
                        document.form1.ChoessAll[i].checked = true;
                    }
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + document.form1.ChoessAll[i].value;
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + ",";
                }
            }
            else
            ...{
               document.form1.ChoessAll.checked = true;
            }
            //document.getElementById("btnShowID").click();
        }
        //删除数据事件(根据选择框删除)
        function Delete_Click()
        ...{
            if (document.form1.ChoessAll.length)
            ...{
                var num=0;
                document.getElementById("hfId").value = ",";
                for (var i=0;i<document.form1.ChoessAll.length;i++)
                ...{
                    if(document.form1.ChoessAll[i].checked)
                    ...{
                        document.getElementById("hfId").value = document.getElementById("hfId").value + document.form1.ChoessAll[i].value;
                        document.getElementById("hfId").value = document.getElementById("hfId").value + ",";
                        num = num + 1;
                    }
                }
            }
            if(0==num)
            ...{
                return alert(''没有选中任何数据!'');
            }
            else
            ...{
                if(confirm(''确定要删除所选中的数据吗?''))
                ...{
                    document.getElementById("btnShowID").click();
                }
            }
        }
    </script> 
  


这里,随便弄个控件来触法“全选”和“反选”JS函数

<a href="#" onclick="CheckAll_Click();">全选</a>
<a href="#" onclick="CheckReChange_Click();">反选</a>
到这里,已经可以实现了“全选”和“反选”功能了(看看,是不是无刷新)。

最后,实现,批量删除,这里,利用JS触法后台事件,添加一个服务器控件Button,ID=btnShowID(JS代码要使用),把他设置为隐藏,添加一句Html代码,来激发这个按钮的点击事件。
<a href="#" onclick="Delete_Click();">删除</a>
实现Button的后台事件:
protected void btnShowID_Click(object sender, EventArgs e)
...{
        //把这里的改成数据库操作就可以实现批量删除了
        labID.Text = hfId.Value.ToString().Trim();
        string[] strParam = hfId.Value.ToString().Split('','');
        for (int i = 0; i < strParam.Length; ++i)
        ...{
            this.Response.Write(strParam[i].ToString().Trim() + "<br>");
        }}
功能到这里就完结了,下面给出全部实现代码:
aspx:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script type="text/javascript">
        //选择全部
        function CheckAll_Click()
        ...{
            if (document.form1.ChoessAll.length)
            ...{
                document.getElementById("hfId").value = ",";
                for (var i=0;i<document.form1.ChoessAll.length;i++)
                ...{
                    document.form1.ChoessAll[i].checked = true;
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + document.form1.ChoessAll[i].value;
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + ",";
                }
            }
            else
            ...{
               document.form1.ChoessAll.checked = true;
            }
            //document.getElementById("btnShowID").click();
        }
        //反选
        function CheckReChange_Click()
        ...{
            if (document.form1.ChoessAll.length)
            ...{
                document.getElementById("hfId").value = ",";
                for (var i=0;i<document.form1.ChoessAll.length;i++)
                ...{
                    if(document.form1.ChoessAll[i].checked)
                    ...{
                        document.form1.ChoessAll[i].checked = false;
                    }
                    else
                    ...{
                        document.form1.ChoessAll[i].checked = true;
                    }
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + document.form1.ChoessAll[i].value;
//                    document.getElementById("hfId").value = document.getElementById("hfId").value + ",";
                }
            }
            else
            ...{
               document.form1.ChoessAll.checked = true;
            }
            //document.getElementById("btnShowID").click();
        }
        //删除数据事件(根据选择框删除)
        function Delete_Click()
        ...{
            if (document.form1.ChoessAll.length)
            ...{
                var num=0;
                document.getElementById("hfId").value = ",";
                for (var i=0;i<document.form1.ChoessAll.length;i++)
                ...{
                    if(document.form1.ChoessAll[i].checked)
                    ...{
                        document.getElementById("hfId").value = document.getElementById("hfId").value + document.form1.ChoessAll[i].value;
                        document.getElementById("hfId").value = document.getElementById("hfId").value + ",";
                        num = num + 1;
                    }
                }
            }
            if(0==num)
            ...{
                return alert(''没有选中任何数据!'');
            }
            else
            ...{
                if(confirm(''确定要删除所选中的数据吗?''))
                ...{
                    document.getElementById("btnShowID").click();
                }
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <a href="#" onclick="Delete_Click();">删除</a>
    </div>
    <div>
        <asp:GridView ID="gvUint" runat="server" AutoGenerateColumns="False" Width="100%">
            <Columns>
                <asp:TemplateField HeaderText="选择">
                    <ItemTemplate>
                        <input id="chkChoessAll" name="ChoessAll" value=''<%# DataBinder.Eval(Container.DataItem, "ID")%>'' type="checkbox" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="ID" HeaderText="楼盘名" />
                <asp:BoundField DataField="address" HeaderText="地址" />
            </Columns>
        </asp:GridView>
    </div>
        <a href="#" onclick="CheckAll_Click();">全选</a>
        <a href="#" onclick="CheckReChange_Click();">反选</a>
        <asp:Label ID="labID" runat="server"></asp:Label>
    <div>
        <asp:HiddenField ID="hfId" runat="server" />
        <asp:Button ID="btnShowID" runat="server" Text="btnShowID" OnClick="btnShowID_Click" style="display:none"/></div>
    </form>
</body>
</html>
 

CS:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page 
...{
    protected void Page_Load(object sender, EventArgs e)
    ...{

    }
    protected void btnShowID_Click(object sender, EventArgs e)
    ...{
        //把这里的改成数据库操作就可以实现批量删除了
        labID.Text = hfId.Value.ToString().Trim();
        string[] strParam = hfId.Value.ToString().Split('','');
        for (int i = 0; i < strParam.Length; ++i)
        ...{
            this.Response.Write(strParam[i].ToString().Trim() + "<br>");
        }
    }
}
 


文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008525/117921.html
分享到:
评论

相关推荐

    ASP.Net.技巧收集.pdf

    - **实现方法**: JavaScript/jQuery监听表格选择事件,并调用后端API删除记录。 #### 18. 删除表格记录警告 - **定义**: 在删除表格记录前提示用户确认。 - **实现方法**: JavaScript/jQuery的确认对话框。 #### ...

    ASP.NET基础控件-教程

     Asp.net手动绑定数据(分页、编辑、删除、加控件等操作)  Asp.net中My97DatePicker4.2日期的使用  Asp.net中DataList控件添加删除  Asp.net获取请求的用户信息IP地址  获取世界IP地址库显所在城市信息  MySQL...

    asp.net开发常用整理集合

    - 数据不会显示在URL地址中,增加了安全性。 - 可以存储复杂的对象类型。 - **缺点**: - 会增加页面的大小,因为ViewState的数据会嵌入到HTML页面中。 - **使用方法**: 1. 设置需要保存的对象或值到`...

    DeepSeek入门宝典:赋能开发者实战的高性能AI解决方案

    内容概要:本文档详细介绍了 DeepSeek 这一高效、经济的人工智能解决方案,旨在为企业端、产品端以及开发者提供深度技术支持。对于企业而言,DeepSeek 带来了显著的成本效益和生产效率提升;而对于具体的产品和服务,它增强了用户体验的质量。特别是针对开发者,文档深入浅出地讲解了如何利用 DeepSeek 实现自动化代码生成、改写等辅助开发功能,并且提供了具体的步骤指导以满足不同环境下的部署需求,包括直接通过官方API接入、本地私有化部署或借助云平台进行托管的方式。 适合人群:希望降低开发门槛,提高工作效率的软件工程师和技术团队。 使用场景及目标:开发者可以根据自身条件选择最适合自己的部署方案来整合 DeepSeek 技术,进而达到优化编码过程、减少人为错误的目的。 其他说明:文中还包括了许多实际操作的例子,如通过代码改写的实例来展示如何改进现有程序段落,还有详细的API使用指南帮助初学者快速上手DeepSeek。此外,还提供了大量外部参考资料链接以便进一步扩展知识和技能范围。

    lusted_3cd_01_0318.pdf

    lusted_3cd_01_0318

    开源AI工具下载——Cherry-Studio-1.0.1-MACOS arm64版

    Cherry Studio是一款支持多模型服务的 Windows/macOS GPT 客户端。通过与Ollama搭配,搭建个人本地AI大模型

    chromedriver-win64-136.0.7058.0.zip

    chromedriver-win64-136.0.7058.0.zip

    matlab程序代码项目案例:使用 Simulink 进行自适应 MPC 设计

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    mellitz_3cd_01_1116.pdf

    mellitz_3cd_01_1116

    基于MATLAB的牛顿迭代法实现

    基于MATLAB的牛顿迭代法实现

    steenman_01_0908.pdf

    steenman_01_0908

    [AB PLC例程源码][MMS_047737]System Time 64Bit Interpreted AOI.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    stone_3ck_01a_0518.pdf

    stone_3ck_01a_0518

    [AB PLC例程源码][MMS_041473]Input Time Stamping.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    lusted_3cd_01_1117.pdf

    lusted_3cd_01_1117

    2010-2023年 上市公司-管理层情感语调数据.zip

    管理层情感语调,或称为管理层语调,是一个在财务与会计领域中常用的概念,特别是在分析上市公司信息披露质量时。它主要指的是管理层在上市公司文字信息披露过程中,用词所体现出的情感倾向和可理解性。 本数据复刻了《财经研究》《中南财经政法大学学报》等顶级期刊的核心解释变量的做法。情感语调对企业未来盈余和未来绩效具有较强解释力、降低会计信息误定价、为分析师预测提供增量信息,而投资者也会对管理层情感语调做出积极反应。 情感语调1=(正面词汇数量-负面词汇数量)/词汇总量;数值越大,情感倾向越偏向正面积极。 情感语调2=(正面词汇数量-负面词汇数量)/(正面词汇数量+负面词汇数量);数值越大,情感倾向越偏向正面积极。 指标 证券代码、企业代码、年份、证券简称、行业代码、行业名称、正面词汇数量、负面词汇数量、词汇总量、句子数量、文字数量、情感语调1、情感语调2。

    mellitz_3cd_02_0318.pdf

    mellitz_3cd_02_0318

    moore_01_0909.pdf

    moore_01_0909

    lusted_3ck_02a_0119.pdf

    lusted_3ck_02a_0119

    pimpinella_3cd_01_0916.pdf

    pimpinella_3cd_01_0916

Global site tag (gtag.js) - Google Analytics