2016-09-29 30 views
0

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

<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 [email protected]", 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(); 
    } 
} 

但是,这是行不通的。在文本框中输入值后,如果我在框外单击,文本内部消失。有没有其他方法可以做到这一点?或者我在这里做错了什么?

+0

@JeremyKern他有一个脚本管理和更新面板 – Ted

回答

1

我建议您应该添加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 = ""; 
    } 
} 
+0

是我确定我得到的数据表我已经验证的内容。 .ok我会尝试一个按钮 –

+0

@ManUnUncharted - 让我知道你如何得到 – Ted

+0

我试着用一个按钮,但仍然是一样的。当我点击按钮时,文本框变为空白..清除 –

相关问题