【问题标题】:Getting Repeater By String in ASP.NET在 ASP.NET 中通过字符串获取中继器
【发布时间】:2011-07-01 20:32:51
【问题描述】:

我在 aspx 页面中有一堆中继器,例如“repeater1”、“repeater2”等

我想像访问它们一样访问它们

for(int i = 0; i < 5; i++) 
   // get the repeater like FindRepeater("repeater"+i) and bind it

在我尝试过的 Page_Load 后面的代码中

Repeater repeater = (Repeater)this.FindControl("repeater"+i)

但它说我不能将控件投射到中继器。

如何做到这一点?

【问题讨论】:

  • 我没有答案,应该可以。但是我发现您正在将一个 int 附加到一个字符串中,这令人不安。试试 String.Format("repeater{0}", i)

标签: c# asp.net


【解决方案1】:

我正在运行您的相同代码(除了转换 i tostring()),并且它的构建很好。你可以试试这个。。

Repeater repeater = this.FindControl("repeater"+i.ToString()) as Repeater;

【讨论】:

  • 这就是我在评论中所说的类似的话。我不知道如果您将字符串连接与整数一起使用会发生什么,因为我从不这样做。在这种情况下,我通常会使用 String.Format("repeater{0}", i)。
  • "repeater"+i.ToString() 和"repeater"+i一样,不管类型是i,重载都会调用ToString
  • 哇,我不知道 c# 做到了。谢谢^^
【解决方案2】:

如果您的页面正在使用母版页,那么您需要使用以下内容:

Repeater rptr = (Repeater)this.Master.FindControl("body").FindControl("repeater" + i);

body 是 ContentPlaceHolderId。此外,如果中继器位于用户控件中,您需要执行以下操作:

Repeater rptr = (Repeater)this.Master.FindControl("body").FindControl("MyUserControl").FindControl("repeater" + i);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2020-08-14
    • 2017-08-04
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多