我想创建一个自定义控件:一个数字文本框。 我遵循了本教程(http://www.codeproject.com/Articles/42382/Creating-a-Numeric-TextBox-Control),但我遇到了一个问题。 我想动态地创建这些控件:
NumericTextBox _Quantity = new NumericTextBox();
_Quantity.ID = "_Quantity" + id;
_Quantity.Text = "1";
然而,据说没有定义" ID" NumericTextBox中的属性。然而,这个控件是TextBox的孩子,所以它应该具有ID属性,就像Text的那个一样好......
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方法是否可以使用自定义控件?
非常感谢!
编辑:
我的解决方案中有两个项目:
这是我的网页提取代码:
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 :(得分: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
应与您的自定义控件配合使用。