FormView ItemTemplate中的ASP.net访问控制

时间:2011-05-05 15:19:50

标签: c# asp.net formview itemtemplate

我有一个带有控件的项目模板的表单视图,是否可以访问该控件OnDatabound,因此我可以将控件与数据绑定。我在这里使用面板作为例子。

<cc1:LOEDFormView ID="FireFormView" runat="server" DataSourceID="DataSourceResults"     CssClass="EditForm" DataKeyNames="id" OnDatabound="FireFromView_Databound">
<ItemTemplate>

<asp:Panel ID ="pnl" runat="server"></asp:Panel>

</ItemTemplate>

</cc1:LOEDFormView>

4 个答案:

答案 0 :(得分:9)

您必须注意项目模式以及您想要查找的控件。就像你在物品模板中的控制一样,那就像是..

if (FormView1.CurrentMode == FormViewMode.ReadOnly)
{

  Panel pnl = (Panel)FormView1.FindControl("pnl");
}

答案 1 :(得分:1)

我没有在标记中看到标签但是看到了Panel。所以要访问面板,

尝试

Panel p = FireFormView.FindControl("pnl") as Panel;
if(p != null)
{
    ...
}

答案 2 :(得分:1)

以下此代码解决了我的问题。虽然该示例访问标签,但它适用于大多数控件。您只需向DataBound添加FormView个活动即可。

protected void FormView1_DataBound(object sender, EventArgs e)
{
  //check the formview mode 
  if (FormView1.CurrentMode == FormViewMode.ReadOnly)
  {
    //Check the RowType to where the Control is placed
    if (FormView1.Row.RowType == DataControlRowType.DataRow)
    {
      Label label1 = (Label)UserProfileFormView.Row.Cells[0].FindControl("Label1");
      if (label1 != null)
      {
        label1.Text = "Your text";
      }
    }
  }
}

答案 3 :(得分:0)

    if (FireFormView.Row != null)
    {
        if (FireFormView.CurrentMode == FormViewMode.ReadOnly)
        {
            Panel pnl = (Panel)FireFormView.FindControl("pnl");
        }
        else
        {
            //FormView is not in readonly mode
        }
    }
    else
    {
        //formview not databound, check select statement and parameters.
    }