`
shirlly
  • 浏览: 1647114 次
  • 性别: 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
分享到:
评论

相关推荐

    DataGridView标头CheckBox全选反选

    而在这个特定的场景中,我们需要实现一个增强的功能:在`DataGridView`的列头添加一个`CheckBox`,通过这个`CheckBox`可以实现所有行中对应复选框的全选或反选操作。这个功能在数据管理界面中十分常见,例如在批量...

    Flex中DataGrid内嵌CheckBox的全选反选和防止选择状态错乱实现方法

    以上就是Flex中DataGrid内嵌CheckBox实现全选反选及防止选择状态错乱的基本步骤。通过自定义列类、监听CheckBox事件和处理全选/全反逻辑,我们可以创建一个功能完善的多选DataGrid。在实际项目中,还可以根据需求...

    三种方式实现checkbox全选,反选

    以下是三种实现Checkbox全选和反选的方法,以及它们的JavaScript和Java实现细节。 ### 方法一:使用`checked`属性 **JavaScript实现**: 在JavaScript中,可以通过获取全选按钮的`checked`属性来控制所有复选框的...

    silverlight实现datagrid全选、反选、分页、导出EXCEL

    在本文中,我们将深入探讨如何使用Silverlight技术来实现数据网格(DataGrid)的全选、反选、分页以及导出到Excel的功能。Silverlight是一种由微软开发的富客户端技术,用于创建丰富的交互式Web应用程序。 ### ...

    在DataGrid中使用CheckBox,实现全选功能

    这篇博客“在DataGrid中使用CheckBox,实现全选功能”详细介绍了如何实现这一需求。 首先,我们需要在DataGrid的列定义中添加一个CheckBox列。在WPF中,可以使用DataGridTemplateColumn来自定义列模板,将CheckBox...

    Flex dataGrid 全选、反选

    本文将详细讨论如何在Flex DataGrid中实现全选和反选功能,并结合`checkBox`来优化这一过程。 首先,我们要理解DataGrid的结构。DataGrid由多个列组成,每一列可能包含不同类型的控件,如文本、图像或复选框。在...

    flex4 list全选,反选

    当全选CheckBox被选中时,将所有数据项的selected属性反转,即将已选中的改为未选中,未选中的改为选中,从而实现反选效果。 3. **自定义ItemRenderer**: - 对于List的每一项,我们可以创建一个自定义的...

    flex datagrid checkbox 全选/反选

    在某些场景下,用户可能需要实现对DataGrid中的所有行进行全选或反选的功能,比如批量操作、数据处理等。本文将基于给定的代码片段,详细解析如何在Flex中实现DataGrid的全选与反选功能。 #### 二、关键知识点 ###...

    datagrid全选(JS)

    ### 数据表格(DataGrid)全选与反选功能实现 在Web开发中,数据表格(DataGrid)是用于展示大量数据的一种常见组件。为了提高用户体验并简化操作流程,开发人员经常需要为DataGrid添加全选和反选的功能。本文将详细...

    DataGrid全选并获取选中条目数

    以下是在C#代码中实现这个功能的方法: 1. **创建复选框列** - 在代码中创建一个CheckBoxColumn,并设置其Header文本为"全选"。 - 将此列添加到DataGrid的Columns集合中。 ```csharp var checkBoxColumn = new ...

    Wpf datagrid 多选、单选、反选

    总的来说,`Wpf DataGrid`的多选、单选和反选功能可以通过设置控件属性、监听事件以及绑定数据来实现。`DataGridCheckBox`则提供了一种直观的方式来控制行的选中状态,提高了用户操作的便利性。理解并熟练应用这些...

    WPF CheckBox全选、反选比较通用

    这个例子展示了如何在WPF中利用数据绑定、事件处理和ICollectionView来实现CheckBox的全选和反选功能。这样的代码设计易于维护和复用,可以灵活地应用于各种项目中。希望这个教程对你在开发WPF应用时有所帮助。

    WPF-DataGrid中CheckBox实现全选与非全选

    为了实现全选和非全选的功能,我们需要在后台代码中处理`IsAllSelected`属性的改变。可以使用`INotifyPropertyChanged`接口来通知UI更新。当`IsAllSelected`属性改变时,遍历`DataGrid`的所有数据项,将它们的`Is...

    WPF DATAGRID全选全不选

    在WPF的DataGrid控件中,用户可能希望实现一键全选或一键全不选所有显示的数据行。这个功能可以提升用户体验,简化大量数据的操作流程。 在WPF的DataGrid控件中,全选和全不选功能可以通过绑定到DataGrid的选中项...

    在DataGrid中进行复选框的操作(全选和取消)

    在.NET框架中,`DataGrid`控件是一个用于展示数据表格的强大工具,它允许用户以交互方式查看和编辑数据。在某些应用场景下,我们可能需要在`DataGrid`的每一行添加复选框,以便用户可以多选操作,如全选和取消全选...

    flex datagrid 嵌套checkbox实现全选

    在Flex开发中,数据网格...总结,这个Flex3示例展示了如何在DataGrid中嵌套复选框并实现全选功能,这对于构建交互式的数据管理界面至关重要。通过学习和实践,开发者可以创建更灵活、用户友好的数据操作界面。

    WPF 使用C#实现DataGrid联动

    3. **全选/反选**:在DataGrid中实现全选和反选功能,可以通过绑定一个IsAllSelected属性到一个CheckBox,并利用DataGrid的SelectionMode和SelectionUnit属性。当IsAllSelected改变时,遍历所有行并改变它们的Is...

    datagrid全选功能控件

    3,最后在datagrid中引用下面代码即可 import com.rj.dgrenderer.CheckBoxItemRenderer; import com.rj.dgrenderer.CheckBoxRenderer; 全选" editable="false" sortable="false" draggable="false" width="35" ...

    Flex Datagrid全选功能

    2. **全选功能需求**: 在许多应用中,用户可能需要一次性选择Datagrid中的所有记录,例如进行批量操作,如删除、编辑等。因此,为Datagrid添加全选功能可以提高用户体验。 3. **实现方法**: - **CheckBox**: 可以...

    datagrid-groupview.js

    在给定的标题"datagrid-groupview.js"中,我们可以看出这是一个针对jQuery EasyUI Datagrid组件的扩展,用于实现表格数据的分组显示功能。现在,我们将深入探讨这个知识点。 首先,jQuery EasyUI的Datagrid组件是一...

Global site tag (gtag.js) - Google Analytics