- 浏览: 244257 次
- 性别:
- 来自: 葡萄牙
文章分类
最新评论
-
lightbulb:
...
jQuery中的动画与效果 -
kendezhu:
opportunity 写道 谢谢kendezhu分享,今天正 ...
jQuery 获取和设置select下拉框的值 -
opportunity:
谢谢kendezhu分享,今天正好用上了!
jQuery 获取和设置select下拉框的值
1.嵌套的的Repeater
有时候需要使用到嵌套的Repeater,内层的Repeater需要根据外层的Repeater的某个值来输出相应的内容,这时repeater绑定数据的顺序是先绑定外层的Repeater的第一项,然后绑定这第一项内的内层得Repeater,然后绑定外层的Repeater的第二项,然后绑定这第二项内的内层得Repeater...依次往下直到绑定完。
所以有时可以用Label等控件存储外层的Repeater的某个值,然后内层的Repeater根据该值来输出相应的内容。
如果用sqldatasource等数据源控件的话,有一个小地方需要注意,那就是内层的Repeater的数据源控件需要在外层的Repeater里面才能找到Label等控件,如下:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("LwID")%>' Visible="false"></asp:Label
<asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSource2">
<ItemTemplate>
<div><%#Eval("RwCon")%></div>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:forumDBConnectionString %>"
SelectCommand="SELECT [RwCon], [LwID] FROM [replyword] WHERE ([LwID] = @LwID)">
<SelectParameters>
<asp:ControlParameter ControlID="Label1" Name="LwID" PropertyName="Text"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:forumDBConnectionString %>"
SelectCommand="SELECT a.[LwID], a.[LwCon], a.[UserID], a.[UserIP],b.userNickName FROM [leaveword] a,userinfo b where a.userid=b.userid"></asp:SqlDataSource>
嵌套的的Repeater(非数据源控件的方式)
<asp:Repeater ID="rptPeopleTaskBB" runat="server" onitemdatabound="rptPeopleTaskBB_ItemDataBound">
<ItemTemplate>
<asp:Repeater ID="rptInnerPTB" runat="server">
<HeaderTemplate>
<table cellpadding="5px;" rules="all" style="width:100%; border:solid 1px black; text-align:center;">
<tr><th>序号</th><th>任务名称</th><th>计划开始时间</th><th>计划结束时间</th><th>计划工期</th></tr>
</HeaderTemplate>
<ItemTemplate>
<%count2 = count2 + 1;%>
<tr><td><%=count2%></td>
<td style="text-align:left;"><%#Eval("rwmc")%></td>
<td><%#Eval("karq","{0:yyyy年MM月dd日}")%></td>
<td><%#Eval("wcrq","{0:yyyy年MM月dd日}")%></td>
<td><%#Eval("rwgq")%> 工作日</td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<%count2 =0;%>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
DataTable dtRYRWFGBB = tmd.GetJHRWFPRByXmid("090837043_115716625");
rptPeopleTaskBB.DataSource = dtRYRWFGBB;
rptPeopleTaskBB.DataBind();
}
protected void rptPeopleTaskBB_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
string strfpr=((Label)e.Item.FindControl("lblRWZXR")).Text;
((Repeater)e.Item.FindControl("rptInnerPTB")).DataSource = tmd.GetJHRWByFprandXmid(strfpr, "090837043_115716625_");
((Repeater)e.Item.FindControl("rptInnerPTB")).DataBind();
}
2.在Repeater中操作其内的控件
我们经常有这样的需求,在Repeater中出发某个控件的事件,然后在该事件中操作其他控件,如下:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Width="250"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="确定" onclick="Button1_Click" />
</ItemTemplate>
</asp:Repeater>
protected void Button1_Click(object sender, EventArgs e)
{
Label2.Text =((TextBox)((Button)sender).Parent.FindControl("TextBox1")).Text;
}
这时我们可以试验一下这些Parent到底是什么:
Label2.Text = ((Button)sender).Parent.GetType().ToString();
System.Web.UI.WebControls.RepeaterItem 就是<ItemTemplate> (看来这里设置成了控件 而不是属性)
Label2.Text = ((Button)sender).Parent.Parent.GetType().ToString();
System.Web.UI.WebControls.Repeater 就是Repeater控件
3.客户端验证是为了用户体验,但不安全,因为用浏览器用户工具等这些东西可以修改无论是CSS样式,还是JS代码,所以为了安全还是采用服务器端验证。所以CSS就不说了,js操作元素什么的,最好只操作显示的元素,对于与服务器交互的元素,甚至是要写入数据库的,最好不要用js。
http://www.oschina.net/question/141209_20886?sort=default&p=1#answers
4.sql语句中日期时间格式化查询
不能用like '%2010-2-8%' 会被检查出无法转换为日期型
http://blog.sina.com.cn/s/blog_59cea87f0100eiv3.html
5.Sql常用语句 http://www.cnblogs.com/fan0136/archive/2009/09/21/1571233.html
6.数据库分页语句 http://www.cnblogs.com/morningwang/archive/2009/01/02/1367277.html
http://niunan.iteye.com/blog/264197
7.jQuery防止ajax缓存 http://youfengkai.iteye.com/blog/721252
<script type="text/javascript" language="javascript">
$.ajaxSetup ({
cache: false //close AJAX cache
});
</script>
8.数据库索引 http://www.cnblogs.com/KissKnife/archive/2009/03/30/1425534.html
http://blog.csdn.net/ant_yan/article/details/2932068
http://baike.baidu.com/view/2079871.htm
9.数据库设计规范 http://www.cnblogs.com/JimmyZhang/archive/2007/08/30/875504.html
10.数据库视图 http://www.cnblogs.com/fineboy/archive/2005/09/14/236731.html
http://baike.baidu.com/view/71981.htm
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则 这种变化也可以自动地反映到视图中。
11.数据库ISNULL和IS NULL http://www.cnblogs.com/waxdoll/archive/2009/11/20/is_null_isnull.html
http://www.w3school.com.cn/sql/sql_isnull.asp
12.数据库CAST和CONVERT http://blog.sina.com.cn/s/blog_59cea87f0100eiv3.html
13.TreeView分级递归绑定
以下方法跟数据库设计有很大关系,如表里有节点ID jdid 父节点ID fjdid 所以不是通用方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeNode node = new TreeNode("根节点名称");
node.Value = 获取根节点ID;
node.ImageUrl = "images/tree_folder.gif";
makeTree(获取所有数据的DataTable, node);
TreeView1.ExpandDepth = 1; 展开的深度很重要,因为我们定义了TreeView1_TreeNodeExpanded方法,只要深度在ExpandDepth内的节点,在展开时(这里是绑定时就展开了)都会触发该事件,所以如果默认是都展开的,那样的效果跟不分级递归绑定是一样的,效率很慢,也很费服务器资源
TreeView1.Nodes.Add(node);
}
}
protected void makeTree(DataTable dt, TreeNode tn)
{
DataView dv = dt.DefaultView;
dv.RowFilter = "fjdid='" + tn.Value+ "'"; dv.RowFilter选出所有父节点ID是 tn.Value的数据
try
{
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode(drv["jdmc"].ToString());
node.Value = drv["jdid"].ToString();
node.ImageUrl = "images/tree_folder.gif";
tn.ChildNodes.Add(node);
makeTreeChild(dt, node);
}
}
catch (StackOverflowException ex)
{
Response.Write("栈溢出了:"+ex.Message);
}
}
protected void makeTreeChild(DataTable dt, TreeNode tn) 这里是分级递归到根节点的子节点的子节点,可以自己再加一个类似的方法实现更多级的递归
{
DataView dv = dt.DefaultView;
dv.RowFilter = "fjdid='" + tn.Value + "'";
try
{
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode(drv["jdmc"].ToString());
node.Value = drv["jdid"].ToString();
node.ImageUrl = "images/tree_folder.gif";
tn.ChildNodes.Add(node);
}
}
catch (StackOverflowException ex)
{
Response.Write("栈溢出了:" + ex.Message);
}
}
protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{ 由于前面递归只绑定到根节点的子节点的子节点,所以当展开某节点时还需分级递归绑定出当前展开节点的子节点的子节点
if (e.Node.Depth >= 1) 根节点Depth是0
{ 由于前面有一部分节点已经绑定了,所以在再次分级递归绑定之前需要清除掉当前节点的子节点
e.Node.ChildNodes.Clear();
makeTree(new yg_bz_zysManager().getNodeByFjdid("").Tables[0], e.Node);
}
}
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = new TreeDatatableManager().GetNodeInfoByFjdid("0"); TreeNode rootnode = new TreeNode(dt.Rows[0]["jdmc"].ToString(), dt.Rows[0]["jdid"].ToString(), "images/tree_folder.gif"); MakeTreeDeepOne(new TreeDatatableManager().GetAllNodeInfo(), rootnode); trvwJdmc.ExpandDepth = 1; trvwJdmc.Nodes.Add(rootnode); } } protected void MakeTreeDeepOne(DataTable dt, TreeNode rootnode) { DataView dvw = dt.DefaultView; dvw.RowFilter = "fjdid='" + rootnode.Value + "'"; foreach (DataRowView drv in dvw) { TreeNode childnode = new TreeNode(drv["jdmc"].ToString(), drv["jdid"].ToString(), "images/tree_folder.gif"); rootnode.ChildNodes.Add(childnode); MakeTreeDeepSecond(dt, childnode); } } protected void MakeTreeDeepSecond(DataTable dt, TreeNode node) { DataView dvw = dt.DefaultView; dvw.RowFilter = "fjdid='" + node.Value + "'"; foreach (DataRowView drv in dvw) { TreeNode childnode = new TreeNode(drv["jdmc"].ToString(), drv["jdid"].ToString(), "images/tree_folder.gif"); node.ChildNodes.Add(childnode); MakeTreeDeepThird(dt, childnode); } } protected void MakeTreeDeepThird(DataTable dt, TreeNode node) { DataView dvw = dt.DefaultView; dvw.RowFilter = "fjdid='" + node.Value + "'"; foreach (DataRowView drv in dvw) { TreeNode childnode = new TreeNode(drv["jdmc"].ToString(), drv["jdid"].ToString(), "images/tree_folder.gif"); node.ChildNodes.Add(childnode); } } protected void trvwJdmc_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { e.Node.ChildNodes.Clear(); MakeTreeDeepOne(new TreeDatatableManager().GetAllNodeInfo(), e.Node); } }
发表评论
-
小知识十三
2013-12-04 12:09 6941. Combres js css压缩 及引发的VS功能使 ... -
小知识(十二)
2012-11-02 14:11 11061.jQuery的replaceWith方法 可用 ... -
小知识(十一)
2012-06-16 10:15 21441 .有时为防止SQL注入需要过滤字符,如对Requ ... -
小知识(十)
2012-05-23 17:58 18561.virtual(虚方法)+override(重写) 与 n ... -
小知识(九)
2011-12-28 14:28 9521.手动HTML构建table其中有分级列 分级列类似于一棵 ... -
小知识(八)
2011-11-23 12:00 8191.jQuery DatatableToJson http: ... -
小知识(七)
2011-09-19 17:54 17131.TreeView SelectedNodeChanged事 ... -
小知识(五)
2011-03-29 17:41 10201.在需要弹出提示框时 ... -
小知识(四)
2011-01-31 18:05 12931.使用AspNetPager给数据由数据源控件提供的数 ... -
小知识(三)
2010-12-16 20:22 11331.<a href="*.aspx" ... -
小知识(二)
2010-11-13 14:25 16171.关于页面的内置对象( ... -
小知识(一)
2010-08-27 12:21 12411.QQ在线服务代码 http:// ...
相关推荐
带传动具有结构简单、传动平稳、噪声小等特点,能够在过载时起到保护作用,但传动比不精确,传动效率相对较低,适用于中心距较大的场合。V带传动是其中一种,具有等腰梯形截面,并通过张紧装置来调整带的张力,保证...
知识付费变现小程序源码独立后台版本是一款专为内容创作者、教育机构或企业提供的一款高效、便捷的在线变现工具。它允许用户通过小程序平台分享知识产品,如课程、文章、音频、视频等,并通过内置的支付系统实现收费...
《一年级数学下册第六单元知识树.ppt》的内容主要涵盖了100以内的加法和减法(一),这是小学一年级数学课程中的一个重要单元。这个单元旨在深化学生对加法和减法的理解,并在此基础上发展他们的数感和计算技能。 ...
知识点六:小i机器人在智能机器人领域中的布局 * 小i机器人是全球最大的智能机器人技术提供和平台运营商,服务全球用户超过5亿。 * 小i机器人拥有最先进的智能人机对话引擎,每年数百亿次的对话交互。 * 小i机器人...
根据您的要求,需要生成与标题“六年级地理下册重点知识要点说明”相符的知识点,但提供的内容无法实现这一点。 为了完成您的要求,我将基于常规六年级下册地理学科的知识体系,来编写一段关于六年级地理下册重点...
人教版小升初六年级数学所有知识点汇总.pdf
精通版六年级上册小学英语 Unit 5 单元知识点小结.docx
这篇资料主要涵盖了小学六年级上册冀教版数学的知识要点,包括了圆的特性、圆心、直径、半径的概念及关系,圆的对称性,如何画圆,以及比的相关概念。以下是对这些知识点的详细阐述: 1. **圆的认识**:圆是由曲线...
小学科学粤教版六年级下册全册单元知识点.pdf 本资源是小学科学粤教版六年级下册全册单元知识点的总结,涵盖了杠杆、滑轮、轮轴、齿轮、斜面、自行车等简单机械的知识点,以及珍贵的淡水资源的保护和节约。 杠杆 ...
这篇文档是粤教粤科版小学科学六年级上册的期末复习知识点总结,涵盖了物质变化、混合与分离、生锈与防锈、燃烧与灭火、植物与环境、动物与环境、食物链以及代代相传的特征等多个主题。 1. 物质变化: - 物质变化...
新沪教牛津版六年级下册小学英语 Module 1 单元知识点小结.docx
【苏教版小学科学六年级下册必考知识点】涵盖了人体生长发育、青春期的变化、人生周期、健康生活方式、生物遗传与变异等多个主题。以下是详细的知识点解析: 1. **人体生长发育** - 在出生后的第一年,生长速度最...
新沪教牛津版六年级下册小学英语 Module 4 单元知识点小结.docx
新精通版六年级下册小学英语 Unit 6 单元主要涵盖了丰富的词汇、动词的过去式、其他短语以及重要句型。这些知识点对于学生深入理解和应用英语至关重要。 在词汇部分,学生需要掌握一系列形容词,如"largest"(最大...
小学数学是孩子学习数学基础知识的重要阶段,涵盖了一年级到六年级的多个知识点。这份文档整理了北师大版小学数学教材中的关键概念,为学生和教师提供了清晰的学习和教学指南。 一年级,学生主要掌握九九乘法口诀表...
【WordPress知识付费小程序】是一种基于WordPress内容管理系统构建的在线教育平台解决方案,专为知识创作者提供一个售卖课程、文章、音频、视频等数字内容的平台。它整合了微信小程序的功能,让用户可以直接在微信...
文档小程序是一种基于微信小程序平台开发的应用,旨在提供文档的上传、存储、分享和知识付费功能。这类小程序在当今数字化时代中扮演着重要角色,让用户能够方便地管理和分享知识资源,同时为内容创作者提供了盈利的...
由于提供的文件内容包含大量的随机数字、符号和无意义的字符串,并且夹杂着一些可能的网址、代码片段,而真正有关“六年级上册第*单元长方体和正方体知识点”的内容并未清晰展示。因此,我无法直接从当前提供的文件...
【陕旅版小学英语六年级上册单元知识总结】涵盖了两个主要单元,分别是"Unit 1 It's Time to Play the Violin"和"Unit 2 I'm Healthy",旨在帮助学生掌握基本的英语词汇、短语、句型,并提高他们的语言运用能力。...
知识付费小程序源码详解 在数字化时代,知识付费已经成为一种新兴的商业模式,它允许内容创作者通过售卖知识产品来实现变现。本资源提供的是一款2022年最新修复登录接口的独立后台版本知识付费变现小程序源码,对于...