|
もりおさん返信ありがとう御座います。
こんにちはでしたorz 確認したソースです。C#ですが・・・。
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
namespace test2 { // ITemplateを継承したCustomTemplateクラス public class CustomTemplate : ITemplate { public void InstantiateIn(Control container) { // ボタンとテキストを追加 container.Controls.Add(new Button()); container.Controls.Add(new TextBox()); } }
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!this.IsCallback) { // GridViewにテンプレート列を追加する。 TemplateField template = new TemplateField(); template.ItemTemplate = new CustomTemplate(); this.GridView1.Columns.Add(template); // GridViewにデータを追加する string[] list = { "Sunday", "Monday", "Tuesday" }; this.GridView1.DataSource = list; this.GridView1.DataBind(); } } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { Button button = (Button)e.Row.Cells[0].Controls[0]; button.Text = e.Row.DataItem.ToString(); // ボタンの表示名を変更 } } } }
上記ソースコードでバインド時に、ITemplateを継承したクラスCustomTemplateのメソッドInstantiateInが 関数コールされます。恐らく似たような感じだと思います。
ただこのコードを、本番のソースコードに埋め込んでみてもメソッドInstantiateInが関数コールされないのです。 今色々やっていますが・・・サンプルだと単純なんですけどねぇ・・・機能を盛り込んでいる物に対して追加して いるのでどこが悪さしているのか調査中って感じなのです。
|