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 ...
随机推荐
- NOIP2010普及组T4 三国游戏——S.B.S.
题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...
- uva 1471 defence lines——yhx
After the last war devastated your country, you - as the king of the land of Ardenia - decided it wa ...
- 内网穿透利器 Ngrok 使用教程
ngrok 服务可以分配给你一个域名让你本地的web项目提供给外网访问,特别适合向别人展示你本机的web demo 以及调试一些远程的API (比如微信公众号,企业号的开发) 下面开始教程 Step ...
- SGU 174 Walls
这题用并查集来做,判断什么时候形成了环即判断什么时候加入的线段两个端点原先是属于同一集合的.对于一个点,有两个坐标x,y,不好做并查集操作,于是要用map来存储,即做成map<node,int& ...
- Unity使用 UnityVS+VS2013 调试脚本
好消息:UnityVS免费啦 好消息:微软收购了UnityVS公司,UnityVS免费啦 下载地址:https://visualstudiogallery.msdn.microsoft.com/sit ...
- Unity 2D Touch Movement
Demo试玩(Kongregate既然也有广告时间了 --!)http://www.kongregate.com/games/zhaoqingqing/2d-touch-movement 操作步骤 1 ...
- IE插件收集
IEWatch IEWatch是一个微软IE的内置插件,可以让你看到和分析HTTP/HTTPS头信息,Cookies以及通过GET和POST提交的数据.我是经常用来看页面加载时间 下载最新版本请访问: ...
- QC学习三:Excel数据导入导出QC操作流程
环境: QC9 WindowsXP Office2007 1. 准备 1.通过Excel导入QC,需要下载Microsoft Excel Add-in: http://update.externa ...
- Mvc 中ViewBag Model 查找不到解决
按照晚上修改VIew视图中web.config 很显然,没效果... 我的情况是 出现: 我想了下 看下是不是编译器的问题: 我在vs2013中建立 MVC4 然后用 vs2015打开 然后报错- ...
- 07SpringMvc_jsp到jsp的控制器_ParameterizableViewController
本文主要讲的是控制器,Action继承什么类.记得Springmvc系列的第一篇文章说过.SpirngMVC的实现流程.