使用C#在asp.net中动态添加Textbox

时间:2013-03-05 18:59:15

标签: asp.net textbox placeholder

我编写了一个代码,其中文本框动态添加到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);

在此之后需要帮助,例如当用户将光标放在文本框中时,默认文本将消失,如果用户删除光标而不写任何内容,则默认文本将重新出现。此外,默认文本应该有点模糊

感谢。

3 个答案:

答案 0 :(得分:2)

尝试这样的事情

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方法,您不需要知道控件的客户端ID。

答案 1 :(得分:1)

这篇文章准确描述了您的目标:

HowTo: including default text in a Textbox while enforcing server-side validation

相关要点是:

  1. 将javascript属性添加到onfocus&和onblur:

    txtName.Attributes.Add("onfocus","clearText()"); 
    txtName.Attributes.Add("onblur","resetText()"); 

  2. 添加javascript以清除并重新填充文本框:

        function clearText() { 
            document.form1.txtName.value = "" 
        } 
    
        function resetText() { 
            if(document.form1.txtName.value == "") 
                document.form1.txtName.value = "(enter something here)" 
    

答案 2 :(得分:0)

你可以这样做。最简单的方法是使用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

然后,只需将两个控件添加到gridview,就像使用文本框一样。如果您不使用Ajax,可以通过代码隐藏向控件添加javascript,但这更难。如果这是您想要做的,请告诉我,并添加一些代码来向您展示如何。

这应该创建一个带有关联的ajax TextBoxWaterMarkExtender的文本框控件。