Textbox value not getting cleared

2019-07-18 07:10发布

In the below code TextBox value is not getting cleared after clicking on Button.

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# code for button click.

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 = "";
}

I tried adding a line as above TextBox1.Text = ""; to clear text but no use. Please do not ask me to keep Button outside the updatepanel tag. I need the event to be done without posting back the page.

If TextBox is inside Due to timer trigger for ever 20 fsecs the textbox is too blinking and not allowing to edit. To say simply TextBox is refreshing and not allowing even a single bit of text to add.

I don't want to extend this to JavaScripts and other to clear a value in textbox. Can anybody tell me how to clear the textbox value using C#.

5条回答
【Aperson】
2楼-- · 2019-07-18 07:28

You say you don't want to use Javascript and you want to use C# but what if you could write the Javascript in C# and have it executed on the client after the partial postback from the UpdatePanel has been completed?

You could add the following to your Button1_Click method:

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

The above snippet executes Javascript on the client after the partial postback and sets the value of TextBox1 to an empty string.

查看更多
够拽才男人
3楼-- · 2019-07-18 07:29

What worked for me was to use chromes and inspect the combobox element for the html name the browser gives it and using this code:

ScriptManager.RegisterStartupScript(Me.Page, Me.Page.GetType(), "myScript", "document.getElementById('ctl00_m_g_8559e7aa_7fc2_4e23_b9b5_bf638f7e2699_ctl00_cboCustomers_TextBox').value = '';", True)

ctl00_m_g_8559e7aa_7fc2_4e23_b9b5_bf638f7e2699_ctl00_cboCustomers_TextBox

is the unique name given during rendering, i'm pretty sure the name does not change

查看更多
Rolldiameter
4楼-- · 2019-07-18 07:32

Move the Textbox inside the UpdatePanel. Your button only triggers the contents of UpdatePanel to be reloaded, not the ones outside of it.

查看更多
再贱就再见
5楼-- · 2019-07-18 07:34

the textbox1 needs to be inside the </ContentTemplate></asp:UpdatePanel> Only that within the updatepanel will get updated when you click the button

查看更多
劫难
6楼-- · 2019-07-18 07:42

Use another update panel and in Page_Load function add UpdatePanedid.Update(); Hope this helps you.

查看更多
登录 后发表回答