加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

以编程方式访问ASP.NET 2.0中继器中的数据

发布时间:2020-12-16 06:34:41 所属栏目:asp.Net 来源:网络整理
导读:这是一个ASP.Net 2.0 Web应用程序. Item模板如下所示,供参考: ItemTemplate tr td class="class1" align=centera href='url'img src="img.gif"/a/td td class="class1"%# DataBinder.Eval(Container.DataItem,"field1") %/td td class="class1"%# DataBinde
这是一个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,但它可以很容易地找到您的控件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读