引用ITemplate类中的页面/控件

本文关键字:控件 ITemplate 引用 | 更新日期: 2023-09-27 18:29:26

我有一个用户控件,其中有一个RadGrid,它具有动态TemplateField-因为它们是动态的,所以我使用从ITemplate继承的自己的自定义类。以下代码:

    public class ApplicationHeaderTemplateItem : ITemplate
    {
        private string colName;
        public ApplicationHeaderTemplateItem(string cName)
        {
            colName = cName;
        }
        public void InstantiateIn(Control container)
        {
            HtmlTable tb = new HtmlTable();
        HtmlTableRow headerRow = new HtmlTableRow();

        //Create the textbox to display the percentage
        HtmlTableCell percentCell = new HtmlTableCell();
        RadNumericTextBox txt = new RadNumericTextBox();
        txt.ID = "txt" + colName;
        txt.DataBinding += txt_DataBinding;
        txt.AutoPostBack = true;
        txt.TextChanged += txt_TextChanged;
        percentCell.Controls.Add(txt);
        headerRow.Cells.Add(percentCell);
         --snip--
        }
        void txt_TextChanged(object sender, EventArgs e)
        {
        }
    }

正如您所看到的,我的文本框有一个TextChanged事件。我的问题是,该方法是在ApplicationHeaderTemplateItem类的上下文中创建的,因此我无法访问用户控件中的任何控件。有什么办法我能做到这一点吗?

引用ITemplate类中的页面/控件

使用sender参数获取TextBox,那么您就已经在那里了,因为每个控件都有Page属性。

void txt_TextChanged(object sender, EventArgs e)
{
    Control txt = (Control) sender;
    Page page = txt.Page;
}