HTML中的代码

<asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate>
                <table>
                    <thead>
                        <tr>
                            <th>
                                <input id="Checkbox1" type="checkbox" name="ckall" /></th>//全选框
                            <th>ID号</th>
                            <th>编号</th>
                            <th>名称</th>
                            <th>系列</th>
                            <th>油耗</th>
                            <th>价格</th>
                        </tr>
                    </thead>
            </HeaderTemplate>
            <ItemTemplate>
                <tbody>
                    <tr>//重点-----不能用服务器端控件,会自动改变id和name的值,记得写value值,在后台要用到//HTML控件通过value来传递主键信息
                        <td><input id="ck_<%#Eval("ids") %>" type="checkbox" name="ck" value="<%#Eval("ids") %>" /></td>                        <td><%#Eval("ids") %></td>
                        <td><%#Eval("code") %></td>
                        <td><%#Eval("name") %></td>
                        <td><%#Eval("brand") %></td>
                        <td><%#Eval("oil") %></td>
                        <td><%#Eval("price") %></td>
                    </tr>
                </tbody>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

后端代码

private MyDBDataContext _Context = new MyDBDataContext();
    protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.DataSource = this._Context.car.ToList();
        Repeater1.DataBind();
    }
    //点击删除
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Request["ck"] != null)//没选的情况下点击删除会报错,在这里判断
        {
            string s = Request["ck"];//前段如果选了多个,在后端请求过来的格式如:1,2,3(用逗号隔开了)
            string[] ids = s.Split(',');//分割字符串
            foreach (string id in ids)//循环删除
            {
                Delete(id);//删除的方法
            }
        }
        Response.Redirect("Default.aspx");
    }
    public void Delete(string id)
    {
        //找对象
        var query = this._Context.car.Where(r => r.ids.ToString() == id);
        )
        {
            car data = query.First();
            //告诉上下文
            this._Context.car.DeleteOnSubmit(data);
            //提交删除
            this._Context.SubmitChanges();
        }
    }

前段JS代码,实现了全选,全选状态的自动改变,以及删除时的人机交互

<script type="text/javascript">

window.onload = function ()//给全选框加的事件

{

var aCK = document.getElementsByName("ck");

var oCK = document.getElementsByName("ckall")[0];

oCK.onclick = function ()

{

for (var i = 0; i < aCK.length; i++)

{

aCK[i].checked = oCK.checked;//最主要的一句话

}

}

ChangeableCKAll();//可变的多选框。将每个选框都点上对号后,全选框自动进入选中状态;反之自动取消

}

function ChangeableCKAll()

{

var aCK = document.getElementsByName("ck");

var oCK = document.getElementsByName("ckall")[0];

var flag = 0;//标记

for (var i = 0; i < aCK.length; i++)

{

aCK[i].onclick = function ()

{

//思路:每个多选框加点击事件,没点击一次记得让‘标记’归零。循环所有选框,如果有一个没选,

//全选框就不应该选中,跳出循环;如果选框被选中了,‘标记’累加,最后‘标记’的数量跟选框集合相等

//说明全选了,这时候全选框应该为选中状态

flag = 0;

for (var j = 0; j < aCK.length; j++)

{

if (aCK[j].checked==false)

{

oCK.checked = false;

break;

}

else {

flag++;

}

}

if (flag==aCK.length) {

oCK.checked = true;

}

}

}

//删除互动

var oBtn = document.getElementById("Button1");

var aCK = document.getElementsByName("ck");

var isOK = false;

oBtn.onclick = function ()

{

for (var i = 0; i < aCK.length; i++)

{

if (aCK[i].checked) {

isOK = true;

break;

}

}

if (isOK) {

return confirm("确定要删除选中信息吗?");

}

else {

alert("请选择");

return false;

}

}

}

</script>

<asp:Repeater ID="Repeater1" runat="server">            <HeaderTemplate>                <table>                    <thead>                        <tr>                            <th>                                <input id="Checkbox1" type="checkbox" name="ckall" /></th>                            <th>ID号</th>                            <th>编号</th>                            <th>名称</th>                            <th>系列</th>                            <th>油耗</th>                            <th>价格</th>                        </tr>                    </thead>            </HeaderTemplate>            <ItemTemplate>                <tbody>                    <tr>                        <td><input id="Checkbox1" type="checkbox" name="ck" value="<%#Eval("ids") %>" /></td>                        <td><%#Eval("ids") %></td>                        <td><%#Eval("code") %></td>                        <td><%#Eval("name") %></td>                        <td><%#Eval("brand") %></td>                        <td><%#Eval("oil") %></td>                        <td><%#Eval("price") %></td>                    </tr>                </tbody>            </ItemTemplate>            <FooterTemplate>                </table>            </FooterTemplate>        </asp:Repeater>

Webform之Repeater中的单选和多选的应用以及前段JS的实现的更多相关文章

  1. Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用

                                             Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...

  2. Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用

                                             Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...

  3. 关于在repeater中的checkbox实行多选和全选

    今天项目中用到这一块,是一个b2b商城,业务是别人给客户留言后,客户从会员中心的留言管理中查看,用checkbox实行多选和全选后进行批量审核 首先在checkbox后加个hidden,作用见代码: ...

  4. dev中ASPxListBox单选和多选的设置

    只需要设置SelectionMode,为Multiple时是单选,CheckColumn时是多选

  5. 关于Html5中的单选与多选

    1.下拉列表样式: <select> <option value ="volvo">Volvo</option> <option valu ...

  6. WebForm 【Repeater】展示数据

       在 Webform 数据展示中      界面层  : HTLM 业务逻辑层 :只能用 C#  Repeater    重复器  能够用来循环展示数据 具有5种模板  HeaderTemplat ...

  7. 单击行,自己主动选中当前行中的单选框button

    需求:单击行,自己主动选中当前行中的单选框button. aspx页面: <asp:Repeater ID="rptRecordList" runat="serve ...

  8. 在Repeater中嵌套使用Repeater

    在一般的网站中浏览类别的用户控件通常都位于大多数 ASP.NET 页的左边,它使用户能够按类别快速的查找产品.最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加 ...

  9. repeater中后台动态为控件添加属性

    在此贴出repeater中的ItemDataBound事件中的代码: private void ItemDataBound(object sender, RepeaterItemEventArgs e ...

随机推荐

  1. bzoj-3288 3288: Mato矩阵(数论)

    题目链接: 3288: Mato矩阵 Time Limit: 10 Sec  Memory Limit: 128 MB Description Mato同学最近正在研究一种矩阵,这种矩阵有n行n列第i ...

  2. c查漏补缺

    restrict 要理解什么是restrict,首先要知道Pointer aliasing:指两个或以上的指针指向同一数据,例如: ; int *a = &i; int *b = &i ...

  3. 第12章 纤程(Fiber)

    12.1 纤程对象的介绍 (1)纤程与线程的比较 比较 线程(Thread) 纤程(Fiber) 实现方式 是个内核对象 在用户模式中实现的一种轻量级的线程,是比线程更小的调度单位. 调度方式 由Mi ...

  4. Watir、Selenium2、QTP区别

    1.支持的语言 Watir:ruby Selenium2:支持多种语言,如:python,ruby,java,c#,php,perl,javascript QTP:vbscript 2.支持的浏览器 ...

  5. VideoView 播放资源目录raw下的视频

    你把影片copy到res/raw下!檔名小寫加底線,例如:default_video.3gp,在程式碼裡指定uri路徑 String uri = "android.resource://&q ...

  6. hadoop面试100道收集(带答案)

    1.列出安装Hadoop流程步骤 a) 创建hadoop账号 b) 更改ip c) 安装Java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登 ...

  7. docker中清理冗余的image,container

    1) 首先进入超级用户模式 [root@docker ~]# sudo su2) 删除container ( container运行时是不能删除的 )首先停止container [root@docke ...

  8. Android 画布绘图

    我们已经介绍了Canvas,在那里,已经学习了如何创建自己的View.在第7章中也使用了Canvas来为MapView标注覆盖. 画布(Canvas)是图形编程中一个很普通的概念,通常由三个基本的绘图 ...

  9. 使用grunt打包前端代码

    grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...

  10. K2与OData和Swagger的集成

    最近K2陆续发布了一些好消息,从与Box的集成到今年取得的融资.这儿还有一个:K2近期宣布获得了DData和Swagger REST的支持,保障K2 Appit和Blackpearl的用户能建立基于工 ...