ASP.net FormView ItemTemplate 中的访问控制
本文关键字:访问控制 ItemTemplate net FormView ASP | 更新日期: 2023-09-27 17:55:09
我有一个窗体视图,其中包含一个内置控件的项模板,是否可以访问该控件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>
您还必须注意要查找的控件所在的项模式。就像你的控件在项模板中一样,那么它会像..
if (FormView1.CurrentMode == FormViewMode.ReadOnly)
{
Panel pnl = (Panel)FormView1.FindControl("pnl");
}
我在您的标记中看不到标签,但看到一个面板。因此,要访问面板,
尝试
Panel p = FireFormView.FindControl("pnl") as Panel;
if(p != null)
{
...
}
下面的
代码解决了我的问题。尽管该示例访问标签,但它适用于大多数控件。您只需将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";
}
}
}
}
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.
}