Mano Prathibhan C
Mano Prathibhan C

Reputation: 518

automatically update label when entering content in textbox asp.net

I have a textbox and a label in ASP.NET and i want to automatically update the label with a value from database that is fetched using the content entered in textbox. This should be done dynamically when the text is changed in textbox and if a match if found in database, the corresponding value should be displayed in the label field (without page refresh). In this case I will enter employee ID in textbox and employee name should be displayed in label. I am using the following code,

<asp:ScriptManager ID="script_manager" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="update_name" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="text_empID" TextMode="Number" MaxLength="6" AutoPostBack="true" OnTextChanged="text_empID_TextChanged" runat="server"></asp:TextBox>
        <asp:Label ID="label_empName" runat="server"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

The code behind is as follows,

protected void text_empID_TextChanged(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
    con.Open();
    SqlCommand cmd = new SqlCommand("select EmployeeName from EmployeeTable where EmployeeID=@id", con);
    cmd.Parameters.AddWithValue("@id", text_empID.Text);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows.Count > 0)
    {
        label_empName.Text = dt.Rows[0]["EmployeeName"].ToString();
    }
}

But this is not working. Also after entering a value in textbox and if i click outside the box, the text inside disappears. Is there any other way to do this? or am i doing something wrong here?

Upvotes: 0

Views: 2206

Answers (1)

Ted
Ted

Reputation: 4057

I would suggest that you should add a button because the text_changed event only fires when the text-box blurs (loses focus).

That's a very weird behaviour and most users are not used to it and will not expect it.

<ContentTemplate>
   <asp:TextBox ID="text_empID" TextMode="Number" MaxLength="6" runat="server></asp:TextBox>
   <asp:button id="btnSearch" runat="server" OnClick="text_empID_TextChanged" />
   <asp:Label ID="label_empName" runat="server"></asp:Label>
</ContentTemplate>

In any case, have you added a breakpoint? does the event fire? do you get any data back in the DataTable?

EDIT

After your last comment I am convinced that you are clearing the contents of the label on page load.

please, make sure that you only do that in the following context:

protected void Page_Load(object sender, EventArgs e)
{
   if(!Page.IsPostBack)
   {
      label_empName.Text = "";
   }
}

Upvotes: 1

Related Questions