きみはどこのメンバ?

GridViewをいじくりまわしていると、なんの指定もなしでEvalやらBindやらDataItemIndexやらが使えるので、どこから継承してるのか気になっていた。
なので調べてみた。MSDNで。

System.Web.UI.WebControls.CompositeDataBoundControl から継承してるらしい。
http://msdn2.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview(VS.80).aspx
GridViewだけじゃなく、FormView、DetailsView辺りも同じ派生。
ふむふむ。

見つからないメンバ

でも、Evalはメンバにいない。
別のところから来てるんだな・・・

System.Web.UI.Pageが持っていた

PageはTemplateControlを継承している。http://msdn2.microsoft.com/ja-jp/library/acxb7xys.aspx

Eval メソッドは DataBinder.Eval メソッドを呼び出し、GetDataItem メソッドを使用して、式が評価される対象となるオブジェクト参照を解決します。

全く意識せずに使ってた・・・怖い怖い。

別にどこで実装されていようと

使えるので別にいい!・・・かもしれないが、なんか気持ち悪い。
たまにはヘルプを開いて、気になったことを調べてみるのもいいかもしれない。