在asp.net文本框中输入内容时自动更新标签

本文关键字:标签 更新 输入 net asp 文本 | 更新日期: 2023-09-27 18:09:30

我有一个文本框和一个标签在ASP。. NET和我要自动更新标签与从数据库中获取的值使用文本框中输入的内容。这应该在文本框中的文本被更改时动态完成,如果在数据库中找到匹配,则应在标签字段中显示相应的值(无需页面刷新)。在这种情况下,我将在文本框中输入员工ID,员工名称应显示在标签中。我使用下面的代码

<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>

背后的代码如下,

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();
    }
}

但这不起作用。此外,在文本框中输入一个值后,如果我点击框外,里面的文本消失。还有别的办法吗?还是我做错了什么?

在asp.net文本框中输入内容时自动更新标签

我建议您应该添加button,因为text_changed事件仅在文本框blurs(失去焦点)时触发。

这是一个非常奇怪的行为,大多数用户都不习惯,也不会预料到。

<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>

在任何情况下,您是否添加了断点?事件是否触发?你能在DataTable中得到任何数据吗?

编辑

看了你最后的评论,我确信你是在清除页面加载时标签的内容。

请确保只在以下上下文中使用:

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