我创建了一个类来完成一些工作,例如从 System.Web.UI.WebControls.WebControl 继承的 GridView。
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);
}
}
我还在 IHGridView 中为我的转发器创建了 ItemTemplate。
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>
现在我想出了一个问题。我不能在 aspx 中使用 DataBinder.Eval。
<cc1:IHLabelField ID="IHLabelField7" HeaderText="PersonName" Text='<%# DataBinder.Eval(Container.DataItem, "PERSON_NAME") %>' />
这给了我一个错误。错误消息如下: CS1061:“System.Web.UI.Control”中没有“DataItem”的定义。“System.Web.UI.Control”的第一个参数中没有可扩展的方法“DataItem”。请检查是否有使用量规或汇编参考。这是用韩文写的,但我翻译成英文。谁能给我一个线索来解决这个问题?