如何在PostBack之后关注TextBox以及为什么在TextBox为空时Repeater控制显示数据?

时间:2011-09-15 14:40:49

标签: javascript asp.net c#-4.0

我正在开展一个C# ASP.NET 4项目,我需要有一个搜索框,动态搜索数据库表格中的内容,并在每次我在Repeater Control输入字母时在TextBox中显示。

我已经做到了,但问题是

1)每次输入单个字母时,我都会失去对TextBox的关注
2)当我删除TextBox中的内容时,Repeater Control仍显示数据

<asp:TextBox ID="TextBox1" runat="server" Width="90%" 
                                ontextchanged="TextBox1_TextChanged" 
                                onKeyUp="return serachme()" 
                                AutoPostBack="false"></asp:TextBox>
                                <script language="javascript" type="text/javascript">
                                    function serachme() {
                                        __doPostBack('<%=TextBox1.UniqueID %>', "onKeyUp");
                                    }
                                </script>

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    con.Open();
    SqlDataAdapter mycommand2 = new SqlDataAdapter("select qid,title from globalq where title like '%" + TextBox1.Text + "%'", con);
    DataSet ds = new DataSet();
    mycommand2.Fill(ds);
    askQ.DataSource = ds;
    askQ.DataBind();
    con.Close();
}

我已经看到了Set focus in TextBox after postback的例子 和Set focus in TextBox after postback但我不理解,因为我不知道JavaScript那么多。

所以我的问题是

1)每次TextBoX时如何关注__doPostBack? 2)当我删除TextBox中的内容时,为什么Repeater Control仍显示数据以及如何不显示数据?

感谢你提前做出的努力,

尼基尔

1 个答案:

答案 0 :(得分:1)

你试过这个吗?:

con.Open(); 
SqlDataAdapter mycommand2 = new SqlDataAdapter("select qid,title from globalq where title like '%" + TextBox1.Text + "%'", con); 
DataSet ds = new DataSet(); 
mycommand2.Fill(ds); 
askQ.DataSource = ds; 
askQ.DataBind(); 
con.Close(); 

//apply focus back to textbox
TextBox1.Focus();