У меня есть пользовательский элемент управления, в котором у меня есть RadGrid с динамическим TemplateField, поскольку они динамические. Я использую собственный собственный класс, наследующий от ITemplate. Код ниже:Ссылка на страницу/управление из класса 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, поэтому я не могу получить доступ к каким-либо элементам управления в моем пользовательском элементе управления. Есть ли способ, которым я могу это сделать?
Это было бы здорово, но поскольку мне нужно получить объект управления пользователем, это не сработает. I.e ниже: Приложения app = (Приложения) ((Контрольный) отправитель) .Page; дает мне Невозможно преобразовать тип «System.Web.UI.Page» до «» Project.JobControls.Applications – Chris
Так 'Project.JobControls.Applications' является' UserControl' что 'TextBox' сидит? Попробуйте '(Project.JobControls.Applications) txt.NamingContainer;' –
Да, это то, где находится текстовое поле, и содержит метод, который я хочу вызвать – Chris