【问题标题】:Finding user control in TemplateField of DetailsView在DetailsView的TemplateField中查找用户控件
【发布时间】:2010-10-27 06:07:09
【问题描述】:

我有一个要发回的 DetailsView - 里面是一个 UserControl。我很难在回发数据中找到它。

举个例子:

<asp:DetailsView ID="dvDetailsView" runat="Server" AutoGenerateRows="false">
<Fields>
  <asp:TemplateField>
    <ItemTemplate>
      Some text here
    </ItemTemplate>
    <EditItemTemplate>
      <uc:UserControl ID="ucUserControl" runat="server" />
    </EditItemTemplate>
    <InsertItemTemplate>
      <uc:UserControl ID="ucUserControl" runat="server" />
    </InsertItemTemplate>
  </asp:TemplateField>
</Fields>
</asp:DetailsView>

当我回发时,我会假设我会做这样的事情:

MyUserControlType ucUserControl = dvDetailsView.FindControl("ucUserControl") as MyUserControlType;

但这什么也没找到。事实上,我什至在 QuickWatch 中四处走动都找不到这个宝贝……

我需要做什么才能找到这个东西??

编辑:原来我的用户控件 ID 正在更改 - 但为什么呢?我在插入和编辑模板上确实有相同的 ID,但将其注释掉并没有什么区别。

【问题讨论】:

    标签: c# asp.net .net detailsview findcontrol


    【解决方案1】:

    事实证明,用户控件名称已更改 - 我的用户控件(标记为“ucUserControl”)已将其名称更改为通用名称 - 'ctl01'。

    所以,执行dvSituation.Rows[0].Cells[0].FindControl("ctl01") 找到了控件。

    为了找到这个 ID,我只是查看了正在呈现的 HTML 元素,并从 id 检查了父元素,例如'ctl00_MainContent_dvDetailsView_ctl01_lblLabel',其中 lblLabel 出现在 ucUserControl 上。

    rows 列是字段数的基于 0 的索引,如果您指定了 headertemplate,则单元格索引将为 1。

    编辑:天哪!有人(真的不是我,我发誓)隐藏了控件类的 ID 属性!

    public partial class UserControl : BaseControl
    {
      public int Id;
    }
    

    这意味着当 ASP.Net 生成 id 时,它不能,它只是为控件分配了一个通用 Id(在本例中为“ctl01”),而不是实际名称。

    哇。

    【讨论】:

      【解决方案2】:

      DataBind控制后,你会使用:

      dvDetailsView.Rows[0].Cells[0].FindControl("ucUserControl")
      

      并确保您仅在编辑模式下执行此操作,因为该控件仅存在于 EditItemTemplate 中。

      【讨论】:

      • 仍然找不到这个控件,虽然我有另一个可以找到(它只是一个&lt;asp:TextBox&gt; 控件。
      • 您确定您的详细信息视图处于编辑模式,并且您是在 DataBinding 之后进行的吗?我刚刚测试过,这行得通。检查CurrentMode 属性,看看你是否真的处于编辑模式。
      • 数据绑定前不应存在任何行。更不用说子控件了。
      猜你喜欢
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2011-10-15
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      相关资源
      最近更新 更多