pea*_*dog 4 asp.net data-access repeater
这是一个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>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中使用它:
foreach (RepeaterItem item in rptrFollowupSummary.Items)
{
string val = ((DataBoundLiteralControl)item.Controls[0]).Text;
Trace.Write(val);
}
Run Code Online (Sandbox Code Playgroud)
我生产这个:
<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>
Run Code Online (Sandbox Code Playgroud)
我需要的是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>
Run Code Online (Sandbox Code Playgroud)
然后,在您的代码后面,您可以访问每个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;
}
Run Code Online (Sandbox Code Playgroud)
这将添加到您的ViewState,但它可以很容易地找到您的控件.
归档时间: |
|
查看次数: |
8240 次 |
最近记录: |