文本框值未清除

时间:2011-09-08 22:21:37

标签: asp.net ajax postback

在下面的代码中,单击Button后,TextBox值不会被清除。

Default.aspx的

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <br />
    <asp:Timer ID="Timer1" runat="server" ontick="Timer1_Tick" Interval="20">
    </asp:Timer>
    <br />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
                <asp:AsyncPostBackTrigger controlid="Timer1" eventname="Tick" />
            </Triggers>
        <ContentTemplate>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:Repeater ID="Shout_Box" runat="server">
            <ItemTemplate>
               <%# DataBinder.Eval(Container.DataItem, "Message") %>
            </ItemTemplate>
        </asp:Repeater>

        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:TextBox ID="TextBox1" runat="server">
        </asp:TextBox>
    </form>
</body>
</html>

按钮点击的C#代码。

protected void Button1_Click(object sender, EventArgs e)
{
    string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=repeater;" + "UID=root;" + "PASSWORD=********;" + "OPTION=3";
    OdbcConnection MyConnection = new OdbcConnection(MyConString);
    OdbcCommand cmd = new OdbcCommand("INSERT INTO table1(message)VALUES(?)", MyConnection);
    cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = TextBox1.Text;
    MyConnection.Open();
    cmd.ExecuteNonQuery();
    MyConnection.Close();
    TextBox1.Text = "";
}

我尝试在TextBox1.Text = "";上添加一行来清除文字,但没有用。 请不要让我将Button保留在updatepanel标记之外。我需要在不回发页面的情况下完成活动。

如果TextBox在里面由于定时器触发了20个fsecs,文本框太闪烁而且不允许编辑。简单地说TextBox是令人耳目一新的,甚至不允许添加一点文本。

我不想将此扩展到JavaScripts和其他以清除文本框中的值。任何人都可以告诉我如何使用C#清除文本框值。

5 个答案:

答案 0 :(得分:3)

使用其他更新面板,并在Page_Load功能中添加UpdatePanedid.Update();希望这会对您有所帮助。

答案 1 :(得分:2)

textbox1需要位于</ContentTemplate></asp:UpdatePanel>内只有当您点击按钮时,更新面板内的内容才会更新

答案 2 :(得分:1)

将文本框移动到UpdatePanel中。您的按钮仅触发重新加载UpdatePanel的内容,而不是其外部的内容。

答案 3 :(得分:1)

你说你不想使用Javascript而你想使用C#但是如果你能在C#中编写Javascript并在从UpdatePanel完成部分回发后在客户端执行它会怎样?

您可以将以下内容添加到Button1_Click方法中:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myScript", "document.getElementById('" + TextBox1.ClientID + "').value = '';", true);

上面的代码片段在部分回发后在客户端上执行Javascript,并将TextBox1的值设置为空字符串。

答案 4 :(得分:1)

对我来说有用的是使用chromes并检查组合框元素以获取浏览器给出的html名称并使用以下代码:

ScriptManager.RegisterStartupScript(Me.Page,Me.Page.GetType(),“myScript”,“document.getElementById(' ctl00_m_g_8559e7aa_7fc2_4e23_b9b5_bf638f7e2699_ctl00_cboCustomers_TextBox ')。value ='';”,True)< / p>

<强> ctl00_m_g_8559e7aa_7fc2_4e23_b9b5_bf638f7e2699_ctl00_cboCustomers_TextBox

是渲染过程中给出的唯一名称,我很确定名称不会改变