GridViewから継承するカスタムコントロールを作成しようとしています(tut http://msdn.microsoft.com/en-us/library/yhzc935f(v=vs.100).aspxを使用)。ビルドするたびに、Visual Studioは、カスタム名前空間への参照をDefault.aspx.designer.cs内の独自の名前空間に置き換え続けます。
protected global::System.Web.UI.WebControls.WebParts.GridViewCustom GridView1;
置くたびに
protected GridViewCustom.GridViewCustom GridView1;
なんで ?
assembly.csに追加しました
using System.Web.UI;
...
[assembly: TagPrefix("GridViewCustom", "GridViewCustom")]
default.aspxには次のものがあります。
<asp:GridViewCustom ID="GridView1" runat="server">
</asp:GridViewCustom>
これは、コントロールのソースコードです(ソースファイルはApp_Codeにあります)。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GridViewCustom
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:GridViewCustom runat=server></{0}:GridViewCustom>")]
public class GridViewCustom : System.Web.UI.WebControls.GridView
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}