Я создал класс, выполняющий некоторые задания, такие как GridView, наследуемый от System.Web.UI.WebControls.WebControl.
public class IHGridView : System.Web.UI.WebControls.WebControl
{
// inside here, actually return Repeater class.
protected override void OnInit(EventArgs e)
{
_repeater.ItemTemplate = new IHGridItemTemplate(ListItemType.Item, this.Columns);
this.Controls.Add(_repeater);
}
}
Я также создал ItemTemplate для моего повторителя в IHGridView.
public class IHGridItemTemplate : ITemplate
{
}
Класс IHGridView возвращает Repeater и некоторые html-коды, но для удобства я создал некоторые вещи.
public class Columns : StateManagedCollection
{
}
public class IHBoundFieldBase : IStateManager
{
}
public class IHLabelField : IHBoundFieldBase
{
}
Теперь в моем aspx я могу использовать это, как показано ниже:
<cc1:IHGridView ID="IHGridView1" runat="server" EditMode="View">
<Columns>
<cc1:IHLabelField ID="IHLabelField7" DataField="PERSON_NAME" HeaderText="PersonName" />
</Columns>
</cc1:IHGridView>
Теперь у меня возникла проблема.Я не могу использовать DataBinder.Eval в aspx.
<cc1:IHLabelField ID="IHLabelField7" HeaderText="PersonName" Text='<%# DataBinder.Eval(Container.DataItem, "PERSON_NAME") %>' />
Это дает мне ошибку.Ниже приведено сообщение об ошибке: CS1061: в «System.Web.UI.Control» отсутствует определение «DataItem».В первом аргументе System.Web.UI.Control отсутствует расширяемый метод DataItem.Пожалуйста, проверьте, если есть использование рубрики или ссылки на сборку.Это было написано на корейском языке, но я перевел на английский.Кто-нибудь может дать мне подсказку, чтобы решить эту проблему?