![](/img/trans.png)
[英]Control inside EditItemTemplate will be available in Page_Load() only if
[英]How to access EditItemTemplate from on page_load on .ascx
我在usercontrol.ascx上有以下代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="OrderStatusEdit.ascx.cs" Inherits="Admin_Controls_OrderStatusEdit" %>
<asp:FormView ID="fvwOrderStatus" runat="server" OnModeChanging="fvwOrderStatus_ModeChanging" OnItemUpdating="fvwOrderStatus_ItemUpdating" OnDataBound="fvwOrderStatus_DataBound" OnPreRender="fvwOrderStatus_PreRender">
<ItemTemplate>
<%# WebUtils.GetLocString((string)Eval("Status")) %>
<asp:Button ID="btnEdit" runat="server" SkinID="Buttons" CommandName="Edit" Text="<%$ Resources:Common,Edit %>" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlStatus" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlStatus_OnSelectedIndexChanged" DataTextField="DisplayStatus" DataValueField="StatusId">
</asp:DropDownList>
<asp:Button ID="btnUpdate" runat="server" SkinID="Buttons" Text="<%$ Resources:Common,Update %>" CommandName="Update" />
<asp:Button ID="btnCancel" runat="server" SkinID="Buttons" Text="<%$ Resources:Common,Cancel %>" CommandName="Cancel" CausesValidation="false" />
</EditItemTemplate>
</asp:FormView>
我在page.aspx上使用了此控件
我的问题是如何在Page_Load
功能中禁用btnUpdate,以便如何访问EditItemTemplate
和asp:FormView
中存在的按钮控件( <asp:Button ID="btnUpdate"
)
protected void Page_Load(object sender, EventArgs e)
{
//Here I need to Access btnUpdate ?!
}
您不能直接从用户控件的父页面访问用户控件的子控件,因为子控件是通过protected关键字修改的,这意味着它们只能由其类或继承的类访问。
用户控件本身有一个Page_Load方法,但是您将无法使用该方法来访问btnUpdate,因为它包含在FormView的EditItemTemplate中。 但是,您应该能够像下面这样使用FormView的DataBound事件(看来您已经在根据标记进行服务了):
protected void fvwOrderStatus_DataBound(object sender, System.EventArgs e)
{
if(FormView1.CurrentMode == FormViewMode.Edit)
{
Button btnUpdate = FindControl("btnUpdate") as Button;
btnUpdate.Enabled = true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.