2015-01-15 5 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"; 

Однако, говорят, что нет никакого определения для свойства «ID» в NumericTextBox. Тем не менее, этот контроль ребенок TextBox, поэтому он должен иметь свойство 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 работать с настраиваемым элементом управления?

Большое спасибо!

EDIT:

У меня есть два проекта в моем решении:

  • библиотека классов один, "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 
    { 

    } 
} 

Instancing:

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пример?

EDIT FindControl должен работать с вашим пользовательским управлением.

+0

Спасибо за ваш ответ! Я использую пространство имен CustomControls, поэтому я думал, что это сработает ... Я отредактировал свой первый пост с кодом моей страницы;) –

+0

Хм, если я скопирую код в мое решение, он работает. Что произойдет, если вы попытаетесь создать экземпляр простого 'TextBox' в вашем' AddItem'-Method? У вас есть ID-свойство? Возможно, вы забыли ссылаться на некоторые сборки ... – BendEg

+0

Да У меня есть = (В NumericTextBox нет свойства ID, но он должен быть унаследован ... Я могу редактировать первый пост с помощью кода элемента управления. Я добавил ссылку CustomControls на веб-сайт проект, но самым странным является то, что свойство Text работает, но не свойство идентификатора. –

Смежные вопросы