0

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);
        }
    }
}
4

1 に答える 1

0

私は同じ問題を抱えています。 自動生成されたデザイナー ファイルによって1 つのオプション.designer.csが提案されます。ファイルから宣言を削除し、分離コード ファイルで明示的に宣言します。

それ以外の場合は、この質問で概説されている解決策を調べてみてください: Visual Studio 2010 が wi​​nforms コントロールを変更し続けます。

更新:コントロール をファイルにグローバルに登録したのでweb.configtagPrefix、他のカスタム コントロールで共有されている既存のプレフィックスとは対照的に、宣言を一意のものに変更してみましたが、突然すべてがうまくいきました。奇妙なことに、デザイナー ファイルに宣言が表示されなくなりましたが、それでも機能します。

まだ混乱しています。

于 2013-01-22T14:35:31.003 に答える