使用Repeater实现类似GridView编辑功能

订餐系统——Gridview、Repeater和DataList 区别 上篇主要介绍了我们项目中用到的Gridview控件,而与该控件相关的还有两种:DataList 和repeater。之前也用过repeater控件,那么他们的主要区别是什么呢?    GridView:      相对来说它的功能最强大,提供分页,编辑,删除,选择等等很多功能,使用最方便,而且支持分页功能。但是因为模板已经定制好,灵活控制性相对较低。      缺点:占用系统资源大,他的分页 阅读详情

  Repeater控件他给了我们编程人员完好的可编辑性,而且执行效率是微软三个数据控件最快的 ,但是由于自身局限性(没有EditTemplate属性)还不能很好的实现类似于Gridview中的添加、修改、删除功能,但是是不是不能实现了呢,嘿嘿。
        要实现上面功能,首先有两个技术点要解决:
        1、
        2、

        第一个可以通过linkbutton的CommandName和CommandArgument两个属性进行设置,代码如下

<tr>
    
<td style="background-color: #FFF; height:25px; width:30%;">
        
<%# DataBinder.Eval(Container.DataItem, "a")%>
    
</td>
    
<td style="background-color: #FFF;  width:30%;">
        
<%# DataBinder.Eval(Container.DataItem,"b") %>
    
</td>
    
<td style="background-color: #FFF;  width:30%;">
        
<%# DataBinder.Eval(Container.DataItem,"c") %>
    
</td>
    
<td style="background-color: #FFF; width:10%;">
        
<asp:LinkButton runat="server" ID="lbtEdit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID")%>'
            CommandName="Edit" Text="编辑">
</asp:LinkButton>&nbsp;&nbsp;&nbsp;
        
<asp:LinkButton runat="server" ID="lbtDelete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID")%>'
            CommandName="Delete" Text="删除">
</asp:LinkButton>
    
</td>
</tr>

       
        然后在后台设置Repeater的OnItemDataBound事件,通过

e.CommandName

        可以确定是什么操作。

        而关于第二点有有点二了,暂时没找到更好的解决方案。我是这样的,在ItemTemplate中加入两个Panel分别放正常和编辑状态显示的内容,如下

<ItemTemplate>
    
<asp:Panel ID="plItem" runat="server">
        
<tr>
            
<td style="background-color: #FFF; height: 25px; width: 30%;">
                
<%# DataBinder.Eval(Container.DataItem, "a")%>
            
</td>
            
<td style="background-color: #FFF; width: 30%;">
                
<%# DataBinder.Eval(Container.DataItem,"b") %>
            
</td>
            
<td style="background-color: #FFF; width: 30%;">
                
<%# DataBinder.Eval(Container.DataItem,"c") %>
            
</td>
            
<td style="background-color: #FFF; width: 10%;">
                
<asp:LinkButton runat="server" ID="lbtEdit" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID")%>'
                    CommandName="Edit" Text="编辑">
</asp:LinkButton>&nbsp;&nbsp;&nbsp;
                
<asp:LinkButton runat="server" ID="lbtDelete" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID")%>'
                    CommandName="Delete" Text="删除">
</asp:LinkButton>
            
</td>
        
</tr>
    
</asp:Panel>
    
<asp:Panel ID="plEdit" runat="server">
        
<tr>
            
<td style="background-color: #FFF; height: 25px; width: 30%;">
                
<asp:TextBox ID="txtA" Text='<%# DataBinder.Eval(Container.DataItem,"a") %>' runat="server"></asp:TextBox>
            
</td>
            
<td style="background-color: #FFF; width: 30%;">
                
<asp:TextBox ID="txtB" Text='<%# DataBinder.Eval(Container.DataItem,"b") %>' runat="server"></asp:TextBox>
            
</td>
            
<td style="background-color: #FFF; width: 30%;">
                
<asp:TextBox ID="txtC" Text='<%# DataBinder.Eval(Container.DataItem,"c") %>' runat="server"></asp:TextBox>
            
</td>
            
<td style="background-color: #FFF; width: 80px; width: 10%;">
                
<asp:LinkButton runat="server" ID="lbtUpdate" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID")%>'
                    CommandName="Update" Text="更新">
</asp:LinkButton>&nbsp;&nbsp;&nbsp;
                
<asp:LinkButton runat="server" ID="lbtCancel" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID")%>'
                    CommandName="Cancel" Text="取消">
</asp:LinkButton>
            
</td>
        
</tr>
    
</asp:Panel>
</ItemTemplate>


        这样有一个缺点,会在每行tr标签前后多出div标签,虽然这不影响显示(在IE和FF中测试过),但是这给页面造成了垃圾代码,希望那位知道其他解决方案告知下,我在这里就抛砖引玉了:)
        
        接着由后台判断,代码如下 

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    
{
        
if (m_dt.Rows[e.Item.ItemIndex]["ID"].ToString() != m_iID.ToString())
        
{
            ((Panel)e.Item.FindControl(
"plItem")).Visible = true;
            ((Panel)e.Item.FindControl(
"plEdit")).Visible = false;
        }

        
else
        
{
            ((Panel)e.Item.FindControl(
"plItem")).Visible = false;
            ((Panel)e.Item.FindControl(
"plEdit")).Visible = true;
        }

    }

}


protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    
if (e.CommandName == "Edit")
    
{
        m_iID 
= int.Parse(e.CommandArgument.ToString());
    }

    
else if (e.CommandName == "Cancel")
    
{
        m_iID 
= -1;
    }

    
else if (e.CommandName == "Update")
    
{
        
//Update.

        
string sA = ((TextBox)this.Repeater1.Items[e.Item.ItemIndex].FindControl("txtA")).Text.Trim();
        
string sB = ((TextBox)this.Repeater1.Items[e.Item.ItemIndex].FindControl("txtB")).Text.Trim();
        
string sC = ((TextBox)this.Repeater1.Items[e.Item.ItemIndex].FindControl("txtC")).Text.Trim();

        
this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "key", "alert('更新ID:" +
            e.CommandArgument 
+ ";页面值:A," + sA + "----B," + sB + "----C," + sC + "');", true);
    }

    
else if (e.CommandName == "Delete")
    
{
        
//Delete.            
        this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "key", "alert('删除ID:" + e.CommandArgument + "');", true);
    }


    Repeater1.DataSource 
= this.InitDataTable();
    Repeater1.DataBind();
}
Repeater控件实现编辑、更新、删除等操作示例代码 如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?下面有个不错的示例,感兴趣的朋友可以参考下,希望对大家有所帮助 立即下载

相关推荐

浅析Repeater控件的使用 (原样导出和动态显示/隐藏Repeater中的列)

一、Repeater数据原样导出 DataTable dt = ViewState[DtDatat] as DataTable; //Repeater绑定的数据源 this.Repeater1.DataSource = dt; this.Repeater1.DataBind(); DisplayDetailCol(false); //使用流方式导出Excel HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default; Htt

repeater编辑

[code="java"]repeater编辑更新删除 &nbsp;&nbsp;&nbsp; ...

咚季限定 199

快衰落、慢衰落,平坦衰落、频率选择性衰落

目录一、大尺度衰落和小尺度衰落二、平坦衰落和频率选择性衰落1.反射墙、固定天线模型2.相干带宽和时延扩展三、快衰落和慢衰落1.反射墙、运动天线模型2.相干时间和多普勒扩展四、联系总结 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、大尺度衰落和小尺度衰落 移动无线信道的主要特征是信道强度关于时间和频率的变化,大致分两种: 大尺度衰落: .

weixin_45662974的博客 3万+

Axure Repeater实现表格的分页,添加,查询,删除,编辑

Axure如何实现表格的分页,添加,查询

泽漆 1万+

Power Bi数据分析案例:在线零售平台销售数据分析

该数据集为,涵盖2023年1月至2024年3月,包含用户群体特征、购买行为、产品偏好以及参与度指标。用户维度:Customer_ID,Age,Gender,City产品维度:Product_Category,Unit_Price事实表:Order_ID,Quantity,Total_Amount,Discount_Amount,Rating,Delivery_Time在Power Query当中处理销售日期列,并新增年龄段、浏览页面分段列。

2301_79586168的博客 1278

FlowPic实战:从流量到图像的端到端加密应用识别

本文深入解析了FlowPic技术如何将网络流量转化为图像,并利用CNN模型进行端到端加密应用识别。该方法通过分析数据包大小和时序信息生成流量图像,有效绕过加密内容,实现对视频、聊天、文件传输等应用的精准分类。文章提供了从流量抓取、图像生成到轻量级CNN模型设计与训练的完整实战指南,并探讨了在VPN、Tor等复杂场景下的应用与挑战。

weixin_29046035的博客 151

c# Repeater中CommandArgument传多个参数

' runat="server">删除 protected void GVSecondType_RowCommand(object sender, GridViewCommandEventArgs e) { string cmdName = e.CommandName; if (cmdN

donet_expert的专栏 999

SAP-PP 返工订单成本归集优化:从物料结算到成本中心的配置与增强实践

本文深入探讨SAP-PP模块中返工订单成本归集的优化方案,重点解析从物料结算到成本中心的配置与增强实践。通过结算参数文件配置、分配结构调整及增强开发实战,解决返工费用误计入物料成本的问题,确保财务核算精准性。文章还提供测试验证方案与常见报错处理技巧,助力企业实现成本数据清晰流向分析。

weixin_29260291的博客 365

Repeater的Command操作

Repeater的Command操作 1、ItemCommand事件 :在Repeater中所有能触发事件的控件,都会来触发这一个事件 后台创建:在Page_Load中 Repeater1.ItemCommand += ,然后双击Tab键创建 2、CommandName : 判断点击的是什么按钮, 后台调用:e.CommandName 3、CommandArgument : 触...

weixin_38167855的博客 199

linux和mac安装+配置circos(

一定要下载完这两个包,GD才会work,要不然会报错,且-modules显示也是fail。官网的教程说的很明白,但是很多包都已经过时了需要在网上找。一般来讲,所有包的安装都不会太困难,除了GD。1.是因为官网给的链接下出来的tgz无法解压。2.我的电脑安装后GD照样是fail的。,进入这个地址下一个.tgz。第二点的原因在于,官网的情况。,进入这个地址,按部就班。GD安装困难有以下几点。搞了一天终于配置成功。

xiufan1的博客 551

AniME框架深度体验:用AI自动生成《修真小说》动画全流程记录

本文详细记录了使用开源多智能体框架AniME,结合其核心动画生成模型AniSora V3,将一段修真小说文本自动转化为风格统一动画视频的全流程实战。文章深入解析了从环境搭建、导演智能体任务分解,到多智能体协作生成分镜、角色、动画及最终合成的每一步操作与挑战,为AI驱动的长视频创作提供了宝贵的实践经验与流程优化思路。

ol789012345的博客 625

Repeater

遍历Repeater中的控件 foreach (RepeaterItem item in Repeater1.Items) { Button btn = item.FindControl("Button1") as Button; 然后在这里使用btn就行了 }   Repeater控件可以通过DataSourceID、DataSource或DataMember属性来设置其数据源

581

基于Simscape的双PID比例调速阀与比例溢流阀液压控制系统建模与仿真

本文提出了一种基于Simscape的双PID液压控制系统建模方法,通过比例调速阀和比例溢流阀实现液压缸速度与压力的解耦控制。系统采用Simscape Fluids物理建模,精确模拟液压元件非线性特性。文章详细介绍了液压被控对象建模过程,包括动力单元、比例阀组合建模、执行机构及传感器配置。同时设计了双PID控制器架构,分别控制速度环和压力环,并给出参数整定建议。该方法通过物理网络直接模拟流体流动和压力动态,相比传统传递函数法具有更高精度,为液压系统仿真提供了有效解决方案。

AI的内部世界的博客 284

Repeater控件实现编辑、更新、删除操作

如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?   protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindGrid(); } } private void BindGrid() { string strSQL = "SELECT

刘凤飞 2178

【系统架构设计师-2024下半年真题】案例分析-参考答案及部分详解(完整回忆版)

根据h中描述,为了保证高可靠性,有ping/echo,心跳机制两种策略,从资源利用率问为啥心跳更好。王工觉得使用ping/echo好,但李工觉得从系统资源利用率来说,使用心跳机制好 1、针对质量属性可以使用ping/echo和心跳模式实现,分别简述ping/echo和心跳的实现原理。 2、张工认为心跳策略比较适合,简述为什么?

数据知道的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Repeater实现GridView编辑修改模式

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/lxy_abcde1190/archive/2008/05/30/2496589.aspx RepeaterTest.前台代码: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/xht

weibingbing_net的专栏 515

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

repeater控件 php,Repeater控件实现编辑、更新、删除操作

如何在Repeater控件中实现像GridView控件一样的编辑、更新、删除功能?下面给出示例 vs.net2008(C#)下编写。来自 admin10000.com后台.cs代码protected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){BindGrid();}}private void BindGrid(...

weixin_42502860的博客 334

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Repeater和Gridview的区别

国道封闭

君君的博客 3203

看了Repeater实现GridView修改功能后的一些感想

近日在博客园看到一篇转载的文章《Repeater实现GridView修改删除功能》,感觉作者的思路很好(在不考虑性能的情况下); 在Repeater的里面使用两个Panel来实现交互性的Edit和非Edit状态。 原文下载地址:http://www.x-wow.net/wow/Download/RepeaterTest.rar  不知道是否还能下载,没有测试过。 有兴趣的可以下载下去看看。粘

wh110的专栏 732

关于DataList,Repeater,GridView的一些问题!!

关于DataList,Repeater,GridView的一些问题!! 首先看看他们之间的不同点和相同点吧!! 他们都是数据绑定容器控件,应此都相同的绑定数据源的一些属性, 和事件 比如 属性:datasourceid,...

224

【总结】-Repeater与GridView区别

牛腩的过程中老师讲到了Repeater与GridView两个控件,那么这两个控件有什么区别呢,什么时候用哪一个更合适呢?这是一个值得思考的问题; 1、Repeater 控件 用于显示被绑定在该控件上的项目的重复列表。 Repeater 控件可被绑定到数据库表、XML 文件或者其他项目列表 这里只展示绑定到数据表的情况,其他的后续学习过程中再认识; //后台绑定数据 DataTable dt = n...

Arielle-L 519

datalist,Repeater和Gridview的区别分析

griview优点:功能最强大,提供分页,编辑,删除,选择等等很多功能,使用最方便,直接拖拽到页面上,建立新的数据源,点几下鼠标就可以维护一个表的浏览、删除和修改了,而且是分页的哦。(增加我还没搞明白怎么能点几下鼠标就实现,如果您知道请告诉我。)。而且因为模板已经定制好,想自己灵活控制,不太容易。 缺点:占用系统资源大,他的分页是把整个表的数据取出来,到gridview上分页的,因此如果数据

xyjikl 1009
上一篇: CSS模块化思想 更加有效的管理CSS样式
下一篇: C# Lambda Expressions
汶津
博客等级 码龄20年 13粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值