Repeater 动态增加删除一行
文章参考:文章参考http://www.cnblogs.com/dataadapter/archive/2012/06/25/2562885.html
效果:

前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="rptTest.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div class="dataTable" >
<asp:HiddenField ID="hfRptColumns" runat="server" Value="receiver,expense_amount,cut_payment_amount,acutal_amount,bank_no,bank_name" />
<table cellpadding="" cellspacing="" border="" style=" width:800px">
<thead>
<tr>
<th></th>
<th >
序号
</th>
<th>
收款人
</th>
<th>
报销金额
</th>
<th>
扣款金额
</th>
<th>
实付金额
</th>
<th>
银行账号
</th>
<th>
开户行
</th>
</tr>
</thead>
<tbody>
<asp:Repeater ID="rptTest" runat="server">
<ItemTemplate>
<tr>
<td><asp:CheckBox runat="server" ID="ckBox" /></td>
<td><%# Container.ItemIndex+ %></td>
<td><asp:Label ID="lblReceiver" runat="server" Text='<%#Eval("receiver") %>'></asp:Label></td>
<td><asp:TextBox ID="txtExpenseAmount" runat="server" Text='<%#Eval("expense_amount") %>'></asp:TextBox></td>
<td><asp:TextBox ID="txtCutPaymentAmount" runat="server" Text='<%#Eval("cut_payment_amount") %>'></asp:TextBox></td>
<td><asp:Label ID="lblAcutalAmount" runat="server" Text='<%#Eval("acutal_amount") %>'></asp:Label></td>
<td><asp:Label ID="lblBankNo" runat="server" Text='<%#Eval("bank_no") %>'></asp:Label></td>
<td><asp:Label ID="lblBankName" runat="server" Text='<%#Eval("bank_name") %>'></asp:Label></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tbody>
</table> <div>
<asp:Button ID="btnAddNewRow" runat="server" OnClick="btnAddNewRow_Click" Text="添加一行" />
<asp:Button ID="btnDel" runat="server" Text="删除选中行" onclick="btnDel_Click" />
</div>
</div>
</form>
</body>
</html>
后台代码:
添加一行:
protected void btnAddNewRow_Click(object sender, EventArgs e)
{
//首先,恢复数据源
DataTable dt = DefineDataTableSchema(hfRptColumns.Value);
foreach (RepeaterItem item in rptTest.Items)
{
DataRow newRow = dt.NewRow();
newRow["receiver"] = ((Label)item.FindControl("lblReceiver")).Text;
newRow["expense_amount"] = ((TextBox)item.FindControl("txtExpenseAmount")).Text;
newRow["cut_payment_amount"] = ((TextBox)item.FindControl("txtCutPaymentAmount")).Text;
newRow["acutal_amount"] = ((Label)item.FindControl("lblAcutalAmount")).Text;
newRow["bank_no"] = ((Label)item.FindControl("lblBankNo")).Text;
newRow["bank_name"] = ((Label)item.FindControl("lblBankName")).Text;
dt.Rows.Add(newRow);
} //添加一行
DataRow row = dt.NewRow();
dt.Rows.Add(row);
rptTest.DataSource = dt;
rptTest.DataBind();
}
删除一行
protected void btnDel_Click(object sender, EventArgs e)
{
var arr = new System.Collections.ArrayList();
DataTable dt = DefineDataTableSchema(hfRptColumns.Value);
foreach (RepeaterItem item in rptTest.Items)
{
var chk = item.FindControl("ckBox") as CheckBox;
if (chk.Checked) continue; DataRow newRow = dt.NewRow();
newRow["receiver"] = ((Label)item.FindControl("lblReceiver")).Text;
newRow["expense_amount"] = ((TextBox)item.FindControl("txtExpenseAmount")).Text;
newRow["cut_payment_amount"] = ((TextBox)item.FindControl("txtCutPaymentAmount")).Text;
newRow["acutal_amount"] = ((Label)item.FindControl("lblAcutalAmount")).Text;
newRow["bank_no"] = ((Label)item.FindControl("lblBankNo")).Text;
newRow["bank_name"] = ((Label)item.FindControl("lblBankName")).Text;
dt.Rows.Add(newRow);
} rptTest.DataSource = dt;
rptTest.DataBind();
}
因为Repeater是服务端控件,所以用它动态增加或删除一行会刷新页面。用户体验远没有用 knockoutjs 绑定的效果好
附:代码下载
Repeater 动态增加删除一行的更多相关文章
- JS动态增加删除UL节点LI
JS如何动态增加删除UL节点LI及相关内容. <ul id="ul"> <li id=1>11111111111111111<a href=" ...
- Hadoop 2.6.3动态增加/删除DataNode节点
假设集群操作系统均为:CentOS 6.7 x64 Hadoop版本为:2.6.3 一.动态增加DataNode 1.准备新的DataNode节点机器,配置SSH互信,可以直接复制已有DataNode ...
- jquery动态加入删除一行数据
<html> <head> <title>加入.删除一行</title> <meta http-equiv="content-type& ...
- wpf动态增加删除控件
我在xaml中定义了一个名字为morepictureWrapPan为WrapPanel,然后将控件添加在此WrapPanel中.由于要实现控件的删除功能,所以增加的textbox和button的名字都 ...
- jquery validate 动态增加删除验证规则(转载)
页面加载完成初始化form validate $("#user_regForm").validate({ errorPlacement: function(error, eleme ...
- jquery validate 动态增加删除验证规则
增加规则示例: $('.class').rules('add',{ required: true, messages:{ required: '这是必填,请填写', } }); 删除规则示例: $(' ...
- table动态增加删除
基于网上代码修改实现动态添加表数据行 <!DOCTYPE html> <html lang="cn"> <html> <head> ...
- JQuery动态增加删除元素
<form action="" method="post" enctype="multipart/form-data"> < ...
- MVC中用jQuery加BootStrap实现动态增加删除文本输入框!
http://www.freejs.net/article_biaodan_278.html 这是在网上找到方法,我修改了一下实合我的项目,发博只为收藏记录并加深记忆. 修改后效果如下 @model ...
随机推荐
- 解决Subclipse1.6在64位JDK下不可用的问题
Failed to load JavaHL Library. These are the errors that were encountered: 需要下载SVNKit Adapter Sub ...
- 通过修改 Apache 的配置文件 htaccess 文件实现自定义404页面
最近在学习使用Apache服务器的配置,做一个记录. Apache下有个.htaccess文件,是Apache的一个特殊的配置文件.这个配置文件默认是没有的,要手动在各自的项目的根目录编写才行. 要实 ...
- 在 slua 中使用更新的面向对象方案
上一篇记录了我使用 Slua.Class 来实现面向对象扩展 C# 中得类,但实际使用中,更多地情况是直接在 lua 中定义基类然后扩展,于是触发了我重新思考下是否两种形式应该统一用一种,目前的方案中 ...
- Ubuntu安装secureCRT
在使用secureCRT前确保主机的ssh服务是启动状态. 一.下载secureCRT包 site: https://www.vandyke.com/download/securecrt/downl ...
- (转)Python:self
原文:http://www.douban.com/group/topic/19376685/ 这是对前面一个php程序员问python方法为什么要手写一个self的回答,当时那个帖非常的热闹,但是下面 ...
- hdoj 2502 月之数
月之数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 关于PHP程序员解决问题的能力
这个话题老生长谈了,在面试中必然考核的能力中,我个人认为解决问题能力是排第一位的,比学习能力优先级更高.解决问题的能力既能看出程序员的思维能力,应变能力,探索能力等,又可以看出他的经验.如果解决问题能 ...
- JQuery- 动画与效果
这几天做网站,刚好用到! 1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[cal ...
- swift小结01--基础篇
2014年推出的swift目前已来到了3.0,日趋稳定,这个是之前学习整理的关于swift的资料,分享给大家,希望有用,写的不足的地方还请见谅. 语言背景: Swift 语言由苹果公司 ...
- Struts标签<s:iterator>遍历访问复杂Map对象
<s:iterator value="resultType" id="geneUi"> //拿到要遍历的Map对象 <s:iterator v ...