在访问Formview模板内控件时遇到两个问题。
一是调用语句过早而访问不到Formview模板内控件,二是究竟用什么方法或属性来访问。
比如说其中有一个ID为UserNameTextBox的TextBox,我们要把当前已登陆用户的用户名传给它怎么做呢?
注意:formview在Page_Load的时候是不会呈现外观的,也就不会有TextBox了,所以在Page_Load里写程序无论怎么写也找不到formview1控件模板里的子控件UserNameTextBox。也就是说要等formview控件的外观呈现后才可以找里面的子控件。
这里要用到OnItemCreated事件(FormView_ItemCreated)。
(1)在FormView的属性代码里添加事件: OnItemCreated="FormView_ItemCreated"
(或者在属性面板-事件里添加)
(2)在当前页CS文件里添加处理程序:
protected void FormView_ItemCreated(object sender, EventArgs e)
{
((TextBox)FormView1.Row.FindControl("UserNameTextBox")).Text = HttpContext.Current.User.Identity.Name;
}
//这里FormView的ID为FormView1,模板里有TextBox子控件ID为UserNameTextBox,
//HttpContext.Current.User.Identity.Name是取得当前登陆用户的用户名
//((TextBox)FormView1.Row.FindControl("UserNameTextBox")).Text 这句是关键,就是这样访问模板里子控件的。