首页 > Repeater控件使用总结

Repeater控件使用总结

以前喜欢用gridview来显示数据,在面试一家外包公司时,他们对gridview嗤之以鼻,说:“微软很多自己的控件都不用,控件只是为了入门,我们只用repeater”,我不知道gridview和repeater谁更强大,但都了解一下不是坏事,其中也不全是Repeater的总结,也包括javascript等。

使用repeater可以很方便的绑定数据到表格,到控件的属性,这对于数据的每一行处理来说至关重要,比如说有一行数据,后面有一个删除按钮,可以将这行数据的主键绑定到删除按钮的CommandArgument上,在repeater控件的ItemCommand事件上来处理这些事情。

<td>
<asp:Button ID="btnAuthorized" Text="取消授权" runat="server" CommandName="Authorized" CommandArgument='<%#Eval("Id") %>' />
td>
<td>
<div onclick="javascript:return Del()">
<asp:Button ID="btnDel" Text="删除" runat="server" CommandName="Del" CommandArgument='<%#Eval("Id") %>' />div>
td>

ItemCommand事件

protected void repUnAuthorized_ItemCommand(object source, RepeaterCommandEventArgs e){try{if (e.CommandName == "Authorized"){long Id = long.Parse(e.CommandArgument.ToString());//do something
                }else if (e.CommandName == "Del"){long Id = long.Parse(e.CommandArgument.ToString());//do something
                }}catch (Exception){throw;}}

遍历数据也很方便,但是要注意一点,在repeater里的服务器端控件需要调用FindControl方法才能得到

protected void btnAllDel_Click(object sender, EventArgs e){try{for (int i = 0; i < repUnAuthorized.Items.Count; i++){CheckBox chk = (CheckBox)repUnAuthorized.Items[i].FindControl("chk");if (chk.Checked == true){Button btnDel = (Button)repUnAuthorized.Items[i].FindControl("btnDel");long Id = long.Parse(btnDel.CommandArgument.ToString());//do something
                    }}}catch (Exception){throw;}}

能够遍历数据,能够控制每一行的行为,完成一般的需求绰绰有余,并且样式布局完全可控,美中不足就是没有EmptyTemplate,当数据为空时,没有友好提示,但是,上帝为你关上了一扇门必定打开一扇窗,当数据为空时,我们有更加巧妙的方法

<FooterTemplate><tr><td colspan="12"><asp:Label ID="lblNoData" runat="server" Visible="<%#repUnAuthorized.Items.Count==0%>"Text="没有您需要的数据!">asp:Label>td>tr>
FooterTemplate>

这样我们就能友好的提示了

关于一些友好的界面,比如说对于删除操作,很可能造成误删的情况,需要在删除前确认,这些东西如果放到服务器端也能实现,但是javascript就没有存在价值了,对于确认之类的操作确实可以放到客户端,而对于校验,客户端可有可无,但是服务器端必须有,想起不知谁说的一句话“永远不要相信客户的输入”。

function Del() {if (confirm("确定要删除?")) {return true;}else {return false;}}

实际运用

<div style="float: left;" onclick="javascript:return Del()">
<asp:Button ID="btnAllDel" Text="删除" runat="server" OnClick="btnAllDel_Click" />div>
div>

当返回位false的时候,btnAllDel是不会被点击到的,很强大,就总结到这里。

 

 

 

转载于:https://www.cnblogs.com/HelloMyWorld/archive/2013/01/25/2876251.html

更多相关:

  • 本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:【公众号dotNet工控上位机:thinger_swj】基于Socket访问西门子PLC系列教程(一)在完成上述步骤后,接下来就是编写上位机软件与PLC之间进行通信。上位机UI界面设计如下图所示:从上图可以看出...

  • 我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:Competitor Region ProductA Product...

  • 作为一名IT从业者,我来回答一下这个问题。首先,对于具有Java编程基础的人来说,学习Python的初期并不会遇到太大的障碍,但是要结合自己的发展规划来制定学习规划,尤其要重视学习方向的选择。Java与Python都是比较典型的全场景编程语言,相比于Java语言来说,当前Python语言在大数据、人工智能领域的应用更为广泛一些,而且大...

  • 这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变。举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知识这个问题暂且按下不表,那哪些具体的问题是我需要了解的呢,以下简单罗列:1、了解数据分析师这个岗位在各个地区的需求情况?2、数据分析师的薪...

  • 这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具。对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不晓的。今天,我们就来认识认识数据分析界鼎鼎大名的 pandas。目录一. pandas主要数据结构 SeriesDataFrame二...

  • 首先进入到你需要删除的仓库,在这个页面的左侧或者上部找到”settings”选项 点击进入”settings”,然后一直往下拉,直到看到一个红色的横条区域,下面有一个”Delet this respository”,点击删除即可  ...

  • 删除一个session值:   session_unset(变量);   session_destroy(变量); 删除一个cookie:   注意第二个参数中手册中的说明是:      Cookie 必须用和设定时的同样的参数才能删除。如果其值一个空字符串,或者是 FALSE,并且其它的参数都和前一次调用 setcookie 时相...

  • 蒙特卡洛法和时序差分学习Note 10 蒙特卡洛法和时序差分学习 Monte Carlo and Temporal Difference10.1 蒙特卡洛法和时序差分学习 (Monte Carlo and Temporal Difference)10.2 Q中的TD学习(TD Learning in QQQ )10.3 资格迹(Eli...

  • 强化学习(五) - 时序差分学习(Temporal-Difference Learning)及其实例5.1 TD预测例5.1 回家时间的估计5.2 TD预测方法的优势例5.2 随机移动5.3 TD(0)最优性例5.3:批量更新下的随机行走例5.4: You are the Predictor5.4 Sarsa:策略 TD控制例 5.5...

  • 新建一个login文件,里面存放的就是用户登录的模块。 在body...

  • 练习1:Ecshop  录制登录后退出业务  打开系统  存储页面的标题     a.点击"登录"按钮     b.输入用户名:testing      存储输入的用户名     c.输入密码:123456     d.点击"立即登录"按钮      存储登录成功的提示信息      存储登录成功后页面显示的用户名     e.选择...