以编程方式访问ASP.NET 2.0中继器中的数据
这是一个ASP.Net 2.0 Web应用程序. Item模板如下所示,供参考:
<ItemTemplate> <tr> <td class="class1" align=center><a href='url'><img src="img.gif"></a></td> <td class="class1"><%# DataBinder.Eval(Container.DataItem,"field1") %></td> <td class="class1"><%# DataBinder.Eval(Container.DataItem,"field2") %></td> <td class="class1"><%# DataBinder.Eval(Container.DataItem,"field3") %></td> <td class="class1"><%# DataBinder.Eval(Container.DataItem,"field4") %></td> </tr> </ItemTemplate> 在代码隐藏中使用它: foreach (RepeaterItem item in rptrFollowupSummary.Items) { string val = ((DataBoundLiteralControl)item.Controls[0]).Text; Trace.Write(val); } 我生产这个: <tr> <td class="class1" align=center><a href='url'><img src="img.gif"></a></td> <td class="class1">23</td> <td class="class1">1/1/2000</td> <td class="class1">-2</td> <td class="class1">11</td> </tr> 我需要的是Field1和Field4的数据 我似乎无法按照我说的DataList或GridView的方式获取数据,而且我似乎无法在Google上提出任何其他内容或快速利用这个来做我想做的事情.我能看到获取数据的唯一方法就是使用正则表达式去获取它(因为一个人拿走了他想要的东西.他把它全部拿走了.我是个男人,不是我吗?Aren我呢?) 我是在正确的轨道上(不是寻找特定的正则表达式来做这个;锻造可能是一个后续问题;)),还是我错过了什么? 在这种情况下,Repeater是一成不变的,所以我不能切换到更优雅的东西.曾几何时我做了类似于Alison Zhou建议使用DataLists的东西,但是已经有一段时间(2年),我完全忘记了这样做. Yeesh,谈论忽视一些明显的东西. . . 所以我按照Alison的建议做了,它工作正常.我不认为viewstate在这里是一个问题,即使这个转发器可以获得几十行.我不能真正地说这个问题,如果这样做而不是使用相反(但这对我来说似乎是一个很好的解决方案).显然,后者不是一个观点足迹,但我没有经验足以说明一种方法在我面前没有一个极端的例子时可能更适合另一种方法.艾莉森,一个问题:为什么文字而不是标签? Euro Micelli,我试图避免返回数据库.由于我相对于其他开发领域仍然有点绿色,我承认我并不一定非常了解有多少数据库出行“恰到好处”.这里不存在性能问题(我知道应用程序的负载足以知道这一点),但我想我试图避免它出于习惯,因为我的老板倾向于强调尽可能少的旅行. 解决方法
在我的头顶,你可以尝试这样的事情:
<ItemTemplate> <tr> <td "class1"><asp:Literal ID="litField1" runat="server" Text='<%# Bind("Field1") %>'/></td> <td "class1"><asp:Literal ID="litField2" runat="server" Text='<%# Bind("Field2") %>'/></td> <td "class1"><asp:Literal ID="litField3" runat="server" Text='<%# Bind("Field3") %>'/></td> <td "class1"><asp:Literal ID="litField4" runat="server" Text='<%# Bind("Field4") %>'/></td> </tr> </ItemTemplate> 然后,在您的代码后面,您可以访问每个Literal控件,如下所示: foreach (RepeaterItem item in rptrFollowupSummary.Items) { Literal lit1 = (Literal)item.FindControl("litField1"); string value1 = lit1.Text; Literal lit4 = (Literal)item.FindControl("litField4"); string value4 = lit4.Text; } 这将添加到您的ViewState,但它可以很容易地找到您的控件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 在我的网站中添加HttpModule时出现“500内部服务
- asp.net-mvc-2 – 将模型数据传递给外部javascript
- ASP.NET编译器在更新到5.2.2之后无法加载System.Web.Mvc
- Asp.net 中ViewState,cookie,ession,pplication,cache的
- asp.net-core – 在.NET Core Web API上为CORS启用OPTIONS标
- asp.net-mvc – 类库中的控制器和视图
- asp.net – App_Licenses.dll和licx之间的关系是什么?
- com – asp经典中的server.createObject和createobject之间
- 什么是<%=或<%:在ASP.NET中调用?
- asp.net-mvc-4 – 使用Bootstrap日期时间选择器,Asp.Net MV
- asp.net-mvc – 有什么技巧/技巧使用亚音速与Asp
- asp.net-mvc – 在显示模板中使用DisplayFor
- asp.net – 在标题后添加Gridview行
- asp.net-mvc – 具有复杂路径的ASP.Net MVC – 如
- 在ASP.Net MVC和IIS 7.5中设置最佳http缓存头和服
- 一个ASP.NET Web应用程序中的经典.ASP和.NET .as
- asp.net-mvc – 如何使用可选的查询字符串参数测
- 访问被拒绝从远程计算机读取Perfmon计数器(Asp.N
- asp.net-core – ASP.NET Core 1.1中的multipart
- .NET Core多平台项目模板eShopOnContainers编译手