2016-09-29 78 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

我試着用一個按鈕,但仍然是一樣的。當我點擊按鈕時,文本框變爲空白..清除 –

相關問題