运用场景:
1 当操作多条记录时,可以一次性全部选中或者单选
2 当对选择的数据进行操作时,尤其是在进行删除操作时,及时提示;
注意点:
1 控件的选择位HTML下的控件;
2 当 控件的属性中存在 Runat=server 时; 才可以在.cs 页面中操作,否则不能操作;
例题代码 ★★★★★★★★★★★★cs代码★★★★★★★★★★★★
private MYDataContext _context = new MYDataContext();
protected void Page_Load(object sender, EventArgs e)
{
Fillcar();
}
private void Fillcar()
{
var mimi = _context.Car;
Repeater1.DataSource = mimi;
Repeater1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
████████ 注意此处的传回主键值得方式:██████████
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
在发送页面(aspx 页面),设置主键值:
<input id="ck<%#Eval("Code") %>" type="checkbox" name="ck"★★ value="<%#Eval("Code") %>"★★ onclick="setCheckAll()" /> </td>
在接受页面: string s = Request["ck"].ToString()
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
// 获取主键值
if (Request["ck"] != null)
{
string s = Request["ck"].ToString();//获取选中项的主键值
string[] keys = s.Split(‘,‘);// 将字符串 用分割符分割;
foreach (string ss in keys)
{
// 删除数据
var mimi = _context.Car.Where(p => p.Code == ss);
if (mimi.Count() > 0)
{
Car data = mimi.First();
_context.Car.DeleteOnSubmit(data);
_context.SubmitChanges();
}
}
// 刷新显示(下面两种刷新方式都可以)
// Fillcar();
Response.Redirect("Default3.aspx");
}
}
★★★★★★★★★★★★aspx 页面代码★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
<script language="javascript">
//场景: 当选中 全选框时 下面每条记录的选框都处于选中状态, 当全选框 取消选中时 下面的每条记录的选框则都取消选择;
function check(ckall)
{
//找所有的每一项左侧的复选框。
var cks = document.getElementsByName("ck");
//遍历每个复选框,把每个复选框的选中状态设置得和chkall一样
for (var i = 0; i < cks.length; i++) {
cks[i].checked = ckall.checked;
}
}
//场景: 当 全选框选中时 下面的每条选框都处于选中状态,当下面的任意一条处于不选中状态时 全选框不处于选中状态
function setCheckAll()
{
//1.找到所有的项的复选框。
var cks = document.getElementsByName("ck");
//2.遍历每个复选框,记录是否被全选了。
var selectedall = true;
for (var i = 0; i < cks.length; i++)
{
selectedall = selectedall && cks[i].checked;
}
//3.根据是否被全选的状态,确定ckall的选中状态
var ckall = document.getElementById("Ckall");
ckall.checked = selectedall;
}
// 场景: 当对选中框执行删除操作时, 做出提示,确定的话执行操作,否则不执行操作;
function delect() {
// 找到所有框的复选框
var cks = document.getElementsByName("ck");
//2.判断是否有选中项
var selecteditem = false;
for (var i = 0; i < cks.length; i++) {
selecteditem = cks[i].checked || selecteditem;
}
//3.根据选中项的情况给出不同的对话框提示
if (selecteditem == false) {
alert("请选择要删除的项");
return false;
}
else {
var del = confirm("确认要删除选中的项吗?");
return del;
}
}
</script>
</head>
<body style="height: 200px">
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table style="width:100%">
<tr>
<td>
<input id="Ckall" type="checkbox" onclick="check(this)" name="ckall" /> </td>
<td>名字</td>
<td>排量</td>
<td>油耗</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
// id="ck<%#Eval("Code") %>" 这样可以有效避免ID 重复
★★★★★★★★★★ value="<%#Eval("Code") %>" 设置主键值★★★★★★★★★★★★★★★★★★★★★★★★★★★★
<input id="ck<%#Eval("Code") %>" type="checkbox" name="ck" value="<%#Eval("Code") %>" onclick="setCheckAll()" /> </td>
<td><%#Eval("Name") %></td>
<td><%#Eval("Brand") %></td>
<td><%#Eval("Oil") %></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>