Динамическое добавление текстового поля в asp.net с использованием С#

Я написал код, в котором текстовое поле динамически добавляется в ячейку gridview. В текстовом поле есть тексты по умолчанию. Я хочу, чтобы когда пользователи нажимали на текстовое поле, текст по умолчанию исчезал, и пользователь мог затем писать в нем что-либо только в цифрах, т.е. пользователь не сможет использовать буквы или специальные символы.

Пожалуйста, дайте мне знать, как этого добиться. Пример кода

    Gridview gv=new Gridview();
    gv.DataSource=dt;
    gv.DataBind();

    Textbox t1 = new Textbox();
    t1.Text="Outages if any(in mins)";
    gv.Rows[0].Cells[0].Controls.Add(t1);

Нужна помощь после этого, что-то вроде того, когда пользователь помещает курсор в текстовое поле, текст по умолчанию исчезает, и если пользователь удаляет курсор, ничего не написав, текст по умолчанию снова появится. Также текст по умолчанию должен быть немного размыт.

Спасибо.


person Sameek Kundu    schedule 05.03.2013    source источник
comment
То поведение, которое вы ищете, действительно не предназначено для обработки на стороне сервера, по крайней мере, не идеально. Вам нужно будет написать некоторый javascript для клиентского браузера, чтобы удовлетворить некоторые ваши требования к пользовательскому интерфейсу.   -  person David W    schedule 05.03.2013
comment
Для получения дополнительной информации для дальнейшего исследования изучите заполнители. Они выполняют именно то, что вы пытаетесь сделать, и о них есть тонны информации.   -  person Geneb    schedule 05.03.2013


Ответы (3)


Попробуйте что-нибудь вроде этого

Textbox t1 = new Textbox();
t1.Attributes.Add("onclick", "if(this.value == 'default text') this.value = '';"
t1.Attributes.Add("onblur", "if(this.value == '') this.value = 'default text';" />

Вы также можете использовать onfocus, если пользователи используют ключ tab

При этом, используя подход this.value, вам не нужно знать идентификатор клиента элемента управления.

person codingbiz    schedule 05.03.2013


Ты можешь это сделать. Самый простой способ — использовать ajaxControlToolkit. Вы можете создавать элементы управления динамически. Например:

    Dim mt As new TextBox 
    Dim newTest As New AjaxControlToolkit.TextBoxWatermarkExtender

    With mt
        .ID = "textBox1"
        .TextMode = TextBoxMode.SingleLine
    End With

    With newTest
        .ID = "TextBoxWatermarkExtender1"
        .TargetControlID = mt.ClientID
        .WatermarkText = "test"

    End With

Затем просто добавьте оба элемента управления в вид сетки, как вы делаете с текстовым полем. Если вы не используете Ajax, вы можете добавить javascript в элемент управления через программный код, но это сложнее. Дайте мне знать, если это то, что вы хотите сделать, и я добавлю код, чтобы показать вам, как это сделать.

Это должно создать элемент управления текстовым полем со связанным ajax TextBoxWaterMarkExtender.

person jason    schedule 05.03.2013