当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net repeater实现批量删除

ASP.NET
ASP.NET应用程序设计的10大技巧
asp.net开发与web标准的冲突问题
总结:ADO.NET中容易混淆的概念
ASP.NET数据库编程入门
ASP.Net网络数据库:连接到数据库
ASP.Net之C#中的异常处理
在C++中使用Lambda函数提高代码性能
从零开始学习jQuery (一) 开天辟地入门篇
.Net中的 XmlReader 与 XmlWriter 解析
ASP.NET安全问题--创建安全的Web应用程序
从零开始学习jQuery (二) 万能的选择器
ASP.NET开发必须养成的编程习惯
ASP.NET应用XML技术实现Web报表打印
ASP.NET实现静态的TreeView控件导航
数据结构与算法:C#语言描述 目录
ASP.NET创建XML Web服务全接触
使.NET命名空间符合标准
ASP.Net获得新浪天气预报几种方式总结
.Net技术开发中两个“属性”引起的歧异
.Net课堂:ASP.NET常用的优化性能方法

ASP.NET 中的 asp.net repeater实现批量删除


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 298 ::
收藏到网摘: n/a

asp.net repeater实现批量删除实现效果代码
批量删除涉及到的内容:
1、删除的SQL语句的拼凑,例如delete from sosuo8 where id in(1,2,5)
2、按下批量删除之后需要在客户端验证是否有选中项,和提示删除操作不可恢复。如果在服务端实现,那将非常的不友好,速度慢也是个问题。效果如下:


asp.net repeater实现批量删除实现效果代码
详细的代码:
aspx页面的body区域:
复制代码 代码如下:

<body>
<form id="form1" runat="server">
<div>
</div>
<asp:Repeater ID="rptNews" runat="server" onprerender="rptNews_PreRender">
<HeaderTemplate>
<table border="1">
<tr>
<th>选择</th>
<th>id</th>
<th>标题</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:CheckBox ID="cbx" runat="server" /></td>
<td><asp:Label id="lbl" Text='<%#Eval("id_news_") %>' runat="server" ></asp:Label></td>
<td><%#Eval("title_news_") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Button ID="btnDel" runat="server" onclick="btnDel_Click" Text="批量删除" OnClientClick="return delIt()" />
</form>
</body>

head区域主要是一段按下“批量删除”之后要处理的事件,就是上面的
代码如下:
复制代码 代码如下:

function delIt()
{
var cbxBool = 0;
for(var i = 0;i < cbxArray.length;i++){
var obj = document.getElementById(cbxArray[i]);
if(obj.checked == true){
cbxBool = 1;
break;
}
}
if(cbxBool == 1){
var result = confirm("操作不可以恢复,确定当前操作吗?");
if(result){
return true;
}
}else{
alert("您还没有选中项");
return false;
}
return false;
}

cs的全部代码:
复制代码 代码如下:

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bind();
}
}
//绑定数据
private void bind()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Conn"].ToString());
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("select top 10 id_news_,title_news_ from news_sosuo8_", conn);
da.Fill(ds);
this.rptNews.DataSource = ds; //绑定dataset
this.rptNews.DataBind();//开始绑定
conn.Close();
}
protected void btnDel_Click(object sender, EventArgs e)
{
string delId = "";
//先遍历取得选中项
for (int i = 0; i < this.rptNews.Items.Count; i++)
{
CheckBox cbx = (CheckBox)rptNews.Items[i].FindControl("cbx");
Label lbl = (Label)rptNews.Items[i].FindControl("lbl");
if (cbx != null)
{
if (cbx.Checked)
{
delId += lbl.Text + ",";
}
}
}
//去掉最后一个,
delId = (delId + ")").Replace(",)", "");
Response.Write("删除的语句是:delete news_sosuo8_ where id_news_ in(" + delId + ")");
//自己写删除语句吧
bind();
}

protected void rptNews_PreRender(object sender, EventArgs e)
{
prerepater(rptNews, this);
}

//这个是通用方法用于在公用类库中调用
public static void prerepater(Repeater repeater, System.Web.UI.Page page)
{
ClientScriptManager cs = page.ClientScript;
for (int i = 0; i < repeater.Items.Count; i++)
{
CheckBox cbx = (CheckBox)repeater.Items[i].FindControl("cbx");
//将相应的服务器控件的ClientId注册到客户端JavaScript数组
cs.RegisterArrayDeclaration("cbxArray", String.Concat("'", cbx.ClientID, "'"));
}
}
}