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」がありません。ルーブリックまたはアセンブリ参照を使用しているかどうかを確認してください。これは韓国語で書かれていましたが、私は英語に翻訳しました。誰でもこの問題を解決する手がかりを教えてもらえますか?