Webform之Repeater中的单选和多选的应用以及前段JS的实现
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的实现的更多相关文章
- Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用
Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...
- Webfrom 生成流水号 组合查询 Repeater中单选与复选控件的使用 JS实战应用
Default.aspx 网页界面 <%@ Page Language="C#" AutoE ...
- 关于在repeater中的checkbox实行多选和全选
今天项目中用到这一块,是一个b2b商城,业务是别人给客户留言后,客户从会员中心的留言管理中查看,用checkbox实行多选和全选后进行批量审核 首先在checkbox后加个hidden,作用见代码: ...
- dev中ASPxListBox单选和多选的设置
只需要设置SelectionMode,为Multiple时是单选,CheckColumn时是多选
- 关于Html5中的单选与多选
1.下拉列表样式: <select> <option value ="volvo">Volvo</option> <option valu ...
- WebForm 【Repeater】展示数据
在 Webform 数据展示中 界面层 : HTLM 业务逻辑层 :只能用 C# Repeater 重复器 能够用来循环展示数据 具有5种模板 HeaderTemplat ...
- 单击行,自己主动选中当前行中的单选框button
需求:单击行,自己主动选中当前行中的单选框button. aspx页面: <asp:Repeater ID="rptRecordList" runat="serve ...
- 在Repeater中嵌套使用Repeater
在一般的网站中浏览类别的用户控件通常都位于大多数 ASP.NET 页的左边,它使用户能够按类别快速的查找产品.最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加 ...
- repeater中后台动态为控件添加属性
在此贴出repeater中的ItemDataBound事件中的代码: private void ItemDataBound(object sender, RepeaterItemEventArgs e ...
随机推荐
- [麦先生]LINUX常用命令总结
在系统的学习了如何搭建和利用LINUX进行开发后,我利用xMind这一个强大的bug级软件制作了LINUX常见操作命令汇总,但是由于博客园并不支持xMind格式文件的上传,我只能将其做成图片进行分解上 ...
- 网页中插入FLASH(swf文件),并且让Flash不遮挡HTML元素
一:网页中插入flash代码如下: 当然里面的很多属性可以去掉,根据具体的需求而定. 我们在网页中经常遇到播放flash,要正常播放flash就要用到OBJECT和EMBED这两个标签.鉴于火狐及 ...
- 树形DP求树的重心 --SGU 134
令一个点的属性值为:去除这个点以及与这个点相连的所有边后得到的连通分量的节点数的最大值. 则树的重心定义为:一个点,这个点的属性值在所有点中是最小的. SGU 134 即要找出所有的重心,并且找出重心 ...
- 第13章 Windows内存体系结构
13.1 Windows的虚拟地址空间安排 13.1.1虚拟地址空间的分区(即虚拟地址空间布局) 进程的地址空间划分 分区 x86 32位 Windows 3GB用户模式下的x86 32位Window ...
- C# 程序性能提升篇-1、装箱和拆箱,枚举的ToString浅析
前景提要: 编写程序时,也许你不经意间,就不知不觉的使程序代码,发生了装箱和拆箱,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候,减少装箱和拆 ...
- docker中清理冗余的image,container
1) 首先进入超级用户模式 [root@docker ~]# sudo su2) 删除container ( container运行时是不能删除的 )首先停止container [root@docke ...
- RDLC系列之六 打印纸张的大小(未解决)
问题: 当报表的宽度大于高度的时候,RDLC就默认成横向打印了,把打印纸竖着放就可以正常打印了,但是如果是针式打印机的话,纸张不能连续打印. 如果把宽度和高度值对调,然后横向放纸,打印机里选择“竖打” ...
- [资料]Keychain 获取设备唯一
BAIDU http://blog.csdn.net/wonengxing/article/details/42142595 http://www.cnblogs.com/max5945/archiv ...
- C语言 百炼成钢12
//题目34:对10个数进行排序 #include<stdio.h> #include<stdlib.h> //分析:使用冒泡排序 void main(){ ] = { , , ...
- java加解密操作过程中的中文乱码问题
import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import ...