Repeater控件使用小结持续更新
Repeater嵌套Repeater绑定数据


前台代码
<!--注意层级关系不要写错了-->
<asp:Repeater ID="rpGroup" runat="server"
onitemdatabound="rpGroup_ItemDataBound">
<HeaderTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
</HeaderTemplate>
<ItemTemplate>
<tr>
<th>
第
<%#(int)Eval("groupNo")+1%>
批次
</th>
<th>金额:<label id="lblSumMoney" runat="server" ><%#Eval("SaleOrderMoneySum")%></label></th>
<th>单数:<label id="lblSumSaleOrder" runat="server" ><%#Eval("SaleOrderDzSum")%></label></th>
</tr>
<tr>
<th style="width: 8%">
销售单号
</th>
<th style="width: 13%">
客户名称
</th> </tr>
<asp:Repeater ID="rpSaleOrderDz" runat="server">
<ItemTemplate>
<tr>
<td align="center">
<%#Eval("saleOrderCode")%>
</td>
<td align="center">
<%#Eval("sellerName")%>
</td> </tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
在PageLoad事件中,加载外层Repeter数据
protected void Page_Load(object sender, EventArgs e)
{
var datas = JsonConvert.DeserializeObject<List<ResponseViewSaleOrderDzLstModel>>(strJson);
rpGroup.DataSource = datas;
rpGroup.DataBind();
}
最后一步根据外层绑定的数据找到对应的内层数据
后台代码:这块需要绑定外层Repeater的ItemDataBound事件
//网上资料用到了DataRowView我这里没用到直接绑定了数据集
protected void rpGroup_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = e.Item.FindControl("rpSaleOrderDz") as Repeater;//找到里层的repeater对象
//DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项
//int groupNo = Convert.ToInt32(rowv["qtid"]); //获取组号
rep.DataSource = datas[e.Item.ItemIndex].datas;//datas[groupNo].datas;
rep.DataBind();
}
}
Repeater获取HeaderTemplate、FooterTemplate中的控件
Repeater中FooterTemplate并无FindControl方法,也无法将FooterTemplate转成RepeaterItem,
虽然在Repeater的ItemDataBound事件中,RepeaterItemEventArgs参数用if (e.Item.ItemType == ListItemType.Footer)可判别出这个Footer,但其他时候不行。
可通过如下代码进行文本的赋值:
<label ID="rep2Sum" runat="server" />
((HtmlGenericControl)rep2.Controls[rep2.Controls.Count - ].FindControl("rep2Sum")).Text = ss.ToString();
同理HeaderTemplate:
((HtmlGenericControl)rep2.Controls[0].FindControl("rep2Sum")).Text = ss.ToString();
Repeater实现行上下移动
前端
<asp:Repeater ID="rpNews" runat="server" OnItemCommand="rpNews_ItemCommand" OnItemDataBound="rpNews_ItemDataBound">
<ItemTemplate>
<tr>
<td><%#Eval("menu_name") %></td>
<td><%#Eval("menu_url") %>
<asp:HiddenField ID="zindex" runat="server" Value=<%# Container.ItemIndex%> />
</td>
<td class="gradeX">
<a class="btn btn-primary" href="UpDateMenu.aspx?action=update&oid=<%# Eval("OID") %>&menuName=<%# Eval("menu_name") %>">修改</a>
<a ID="btnDelete" href="MenuHandler.ashx?action=delete&oid=<%# Eval("OID") %>" OnClick="return IsConfirmDelete();" class="btn btn-primary">删除</a>
<asp:LinkButton runat="server" ID="linkUp" CommandArgument='<%# Eval("OID") %>' CommandName='<%# Eval("menuorder") %>' OnClick="lbUp_Click" Text="上移" CssClass="btn btn-primary"></asp:LinkButton>
<asp:LinkButton runat="server" ID="linkDown" CommandArgument='<%# Eval("OID") %>' Text="下移" CommandName='<%# Eval("menuorder") %>' OnClick="lbDown_Click" CssClass="btn btn-primary"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
后端:
public int datacount = ;
protected void rpNews_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton linkUp = e.Item.FindControl("linkUp") as LinkButton;
LinkButton linkDown = e.Item.FindControl("linkDown") as LinkButton;
if (e.Item.ItemIndex == )
{
linkUp.Enabled = false;
}
if (e.Item.ItemIndex == datacount - )
{
linkDown.Enabled = false;
}
}
}
protected void lbUp_Click(object sender, EventArgs e)
{
MenuUCService uc = new MenuUCService();
LinkButton btn = (LinkButton)sender;
HiddenField hf = (HiddenField)btn.NamingContainer.FindControl("zindex");
//先修改自己在修改其他
StringBuilder strSql = new StringBuilder();
//拿到当前行的上一行的Link数据
LinkButton linkCurrentRow = (LinkButton)rpNews.Items[int.Parse(hf.Value)].FindControl("linkUp");
if (!uc.CheckCurrentRowValueRange(linkCurrentRow))
{
return;
}
LinkButton linkUpRow = (LinkButton)rpNews.Items[int.Parse(hf.Value) - ].FindControl("linkUp"); //得到的menuorder-oid
strSql.Append("update USR_ALLMENU set menuorder='" + linkUpRow.CommandName + "' where OID='" + linkCurrentRow.CommandArgument + "';");
strSql.Append("update USR_ALLMENU set menuorder='" + linkCurrentRow.CommandName + "' where OID='" + linkUpRow.CommandArgument + "';");
//重新绑定数据 }
protected void lbDown_Click(object sender, EventArgs e)
{
MenuUCService uc = new MenuUCService();
LinkButton btn = (LinkButton)sender;
HiddenField hf = (HiddenField)btn.NamingContainer.FindControl("zindex");
LinkButton linkCurrentRow = (LinkButton)rpNews.Items[int.Parse(hf.Value)].FindControl("linkDown");
if (!uc.CheckCurrentRowValueRange(linkCurrentRow))
{
return;
}
LinkButton linkDown = (LinkButton)rpNews.Items[int.Parse(hf.Value) + ].FindControl("linkDown");
StringBuilder strSql = new StringBuilder();
strSql.Append("update USR_ALLMENU set menuorder='" + linkDown.CommandName + "' where OID='" + linkCurrentRow.CommandArgument + "';");
strSql.Append("update USR_ALLMENU set menuorder='" + linkCurrentRow.CommandName + "' where OID='" + linkDown.CommandArgument + "';");
//重新绑定数据 }
原理:找到相邻行,然后获取ID和排序方式,然后修改
参考自:http://www.cnblogs.com/webapi/p/5718445.html
Repeater控件使用小结持续更新的更多相关文章
- Repeater控件用法
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Repeater.aspx. ...
- Repeater控件使用中的一些小问题
网页上用来展示列表的数据,发现还是Repeater比GridView,DetailView之类的要灵活些,所以近期用到了就总结下遇到的一些情况,保留下来以备之后查阅,不用现问度娘了... 自己摸索的, ...
- asp.net学习之Repeater控件
asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...
- Asp.net Repeater控件
Repeater控件和DataList控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行. Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出 ...
- asp:Repeater控件使用
Repeater控件和DataList控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行. Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式.D ...
- C#控件之Repeater控件使用
歡迎大家來討論,修改,一定虛心接受. 1.為什麼使用Repeater控件? 關於把從數據庫讀取的數據綁定到前台頁面,我們可以使用DataGrid.DataGridView以及Repeater來佈局,三 ...
- Repeater控件的
http://blog.csdn.net/zhang_xinxiu/article/details/21872433 想起来,公司的aspx页面前台数据展示除了datagrid以为还有Repeater ...
- ASP.Net中通过Jquery前端对Repeater控件绑定的数据进行操作
说明:由于Repeater控件是动态绑定,通过Id获取数据只能默认获取第一行: 1.对Repeater中div设置样式 2.通过$(".css").each(function(){ ...
- Repeater 控件
Repeater 控件是一个容器控件,可用于从网页的任何可用数据中创建自定义列表.Repeater 控件没有自己内置的呈现功能,这意味着用户必须通过创建模板来提供 Repeater 控件的布局.当网页 ...
随机推荐
- linux下使用Android studio启动模拟器时提示 waiting for target device to come online 的问题
方法来自:http://stackoverflow.com/questions/42612468/how-can-i-get-more-information-about-waiting-for-ta ...
- ObjectT5:在线随机森林-Multi-Forest-A chameleon in track in
原文::Multi-Forest:A chameleon in tracking,CVPR2014 下的蛋...原文 使用随机森林的优势,在于可以使用GPU把每棵树分到一个流处理器里运行,容易并行化 ...
- 应运而生! 双11当天处理数据5PB—HiStore助力打造全球最大列存储数据库
阿里巴巴电商业务中历史数据存储与查询相关业务, 大量采用基于列存储技术的HiStore数据库,双11当天HiStore引擎处理数据记录超过6万亿条.原始存储数据量超过5PB.从单日数据处理量上看,该系 ...
- 原生sql的各种问题
1.nutz有方法自动根据数据库建models吗?2.select * from a a没有建相应的models怎么取结果?3.可以直接操作result,而不是在callback里面设置吗? wend ...
- 洛谷P1993 小K的农场_差分约束_dfs跑SPFA
Code: #include<cstdio> #include<queue> using namespace std; const int N=10000+233; const ...
- 微信小程序打开PDF
具体情况是:微信小程序打开springboot返回的pdf文件.微信端先downloadFile,然后openDocument.但是打开文档一直不成功.后来发现官网的例子没有加fileType,我在参 ...
- Tomcat在处理POST和GET提交方式时的字符编码问题
部分内容参考http://yejg1212.blog.163.com/blog/static/3958206120098384327191(原作者:飞翔) 一.POST和GET请求方式的区别: 在默 ...
- Python基础学习_01修改代码所属作者
1.修改开头的作者Author 2.具体步骤如下图 (1)点击下图所画的按钮 (2)具体操作如图所示,就可以得到自己想要的结果了.
- [NOIP 2010] 关押罪犯 (二分+二分图判定 || 并查集)
题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...
- 01.Python基础-4.字符串
1 字符串初识 字符串编码 字符串定义:多个字符(双引号或单引号中的数据)组成 字符串下标 类似列表list 格式化 就是占位符 最常用%s %d %f等等 转义字符 转义字符 描述 \ (在行尾时) ...