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

彼はスクリプトマネージャと更新パネル – Ted

答えて

1

text_changedイベントは、テキストボックスblurs(フォーカスが失われた)のときにのみ発生するため、buttonを追加することをお勧めします。

これは非常に奇妙な動作で、ほとんどのユーザーはそれに慣れず、期待もしません。

<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にデータを戻しますか?

EDIT

あなたの最後のコメントの後、私は、ページのロード時にラベルの内容をクリアしていることを確信しています。

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

を持って@JeremyKernはい、私はそれを確認したDataTableからコンテンツを取得していてくださいイム:

てください、あなただけの次のコンテキストでそれを行うことを確認してください。 .ok私はボタンでそれを試してみます –

+0

@ManoUncharted - どのようにあなたが上がるのか教えてください – Ted

+0

私はボタンで試したが、それでも同じです。ボタンをクリックすると、テキストボックスが空になります。クリア済み –

関連する問題