Member 10604657 Ответов: 1

Как я могу определить templatefield с помощью флажка in ASP.NET с программированием?


Я хочу определить templatefield с флажком на gridview в asp.net с помощью программирования.
подобный этому:
TemplateField tf = new TemplateField();
tf.ItemTemplate = new System.Web.UI.WebControls.CheckBox();
gridView1.Columns.Add(tf);


Что я уже пробовал:

но эта ошибка появляется:
cannot implicitly convert 'System.Web.UI.WebControls.CheckBox' to 'System.Web.UI.ITemplate'.

1 Ответов

Рейтинг:
12

Richard Deeming

То ItemTemplate должен быть экземпляр класса, который реализует то ITemplate интерфейс[^], НЕ экземпляр элемента управления. Необходимо будет создать новый экземпляр элемента управления для каждого элемента данных в родительском элементе управления.

public class CheckBoxTemplate : ITemplate
{
    public void InstantiateIn(Control container)
    {
        CheckBox child = new CheckBox();
        child.DataBinding += BindData;
        container.Controls.Add(child);
    }
    
    private void BindData(object sender, EventArgs e)
    {
        CheckBox child = (CheckBox)sender;
        IDataItemContainer container = (IDataItemContainer)child.NamingContainer;
        child.Checked = DataBinder.Eval(container.DataItem, "Your Property Name Here");
    }
}

...

TemplateField tf = new TemplateField();
tf.ItemTemplate = new CheckBoxTemplate();
gridView1.Columns.Add(tf);

ITemplate.Метод InstantiateIn(Control) (System.Web.Пользовательский интерфейс) | Microsoft Docs[^]


Member 10604657

Большое спасибо
Я попробовал и получил правильный результат.