2015-01-15 27 views
0

我想创建一个自定义控件:一个数字文本框。 我按照这个教程(http://www.codeproject.com/Articles/42382/Creating-a-Numeric-TextBox-Control),但我面临一个问题。 我要动态地创建这些控件那样:动态自定义asp.net控件:ID属性?

NumericTextBox _Quantity = new NumericTextBox(); 
_Quantity.ID = "_Quantity" + id; 
_Quantity.Text = "1"; 

不过,据说有在NumericTextBox的“ID”属性没有定义。然而,这种控制是文本框的孩子,所以它应该有ID属性,如文本的一个效果很好...

using System; 
using System.Web.UI; 

[assembly: WebResource("CustomControls.Resources.NumericTextBox.js", "text/javascript")] 
namespace CustomControls 
{ 
    [ToolboxData(@"<{0}:NumericTextBox ID="""" Text="""" runat=""server""></{0}:NumericTextBox>")] 
    public partial class NumericTextBox : System.Web.UI.WebControls.TextBox 
    { 
     // specific code 
    } 
} 

我错过了什么?如果我可以使这个属性起作用,FindControl方法是否可以使用自定义控件?

非常感谢!

编辑:

我有我的解决方案两个项目:

  • 类库之一, “CustomControls”,其中包含NumericTextBox.cs
  • 我的网站。

这里是我的网页提取代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Text.RegularExpressions; 
using CustomControls; 

public partial class MyPage : System.Web.UI.Page 
{ 
    protected void AddItem(Enum type, Enum content) 
    { 
     string id = (content != null) ? content.ToString() : type.ToString(); 
     ... 

     NumericTextBox _Quantity = new NumericTextBox(); 
     _Quantity.ID = "_Quantity" + id; 
     _Quantity.Text = "1"; 

     ... 
    } 
} 

回答

0

也就是说奇怪,在我的代码它完美的作品:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace ButtonTest2 
{ 
    [ToolboxData(@"<{0}:NumericTextBox ID="""" Text="""" runat=""server""></{0}:NumericTextBox>")] 
    public partial class NumericTextBox : TextBox 
    { 

    } 
} 

实例化:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace ButtonTest2 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      NumericTextBox tb = new NumericTextBox(); 
      tb.ID = "123"; 
     } 
    } 
} 

你想念一些在创建NumericTextBox的课程中使用实例

编辑 FindControl应该与您的自定义控件一起工作。

+0

感谢您的回复!我使用CustomControls的命名空间,所以我认为它会工作...我编辑我的第一篇文章与我的网页的代码;) –

+0

嗯,如果我复制你的代码到我的解决方案,它的作品。如果您尝试在“AddItem”方法中创建简单的“TextBox”实例,会发生什么?你有没有身份证物业?也许你忘了引用一些程序集... – BendEg

+0

是的,我有=(NumericTextBox中实际上没有ID属性,但它应该被继承...我可以用控件的代码编辑第一篇文章,我添加了CustomControls引用到网站项目,但最奇怪的是,文本属性工作,但没有身份证属性。 –