Я пытаюсь отфильтровать сетку с помощью текстового поля в моей таблице заголовков gridiview. В настоящее время я использую метод событий TextChanged для выполнения этой задачи, однако, когда я выполняю метод событий, я не могу отфильтровать gridiview на основе ввода поиска в 'txtID'
.Как фильтровать сетку с использованием события TextChanged?
protected void grdAdjAMT_TextChanged(object sender, EventArgs e)
{
TextBox txtName = (TextBox)GridView1.Rows[(0)].FindControl("txtID");
string strConnString = ConfigurationManager.ConnectionStrings["####"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select u.[uID], u.[uForenames],
u.[uSurname], u.[uCompany], u.[uEmailAddress],
s.[sStartDate]
from [dbo].[UserDe]
where u.[uID] like '%" + txtName + "%'
order by s.[sStartDate] desc";
cmd.Connection = con;
con.Open();
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
con.Close();
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
BindGrid();
}
Я отлажена мой сценарий и обнаружил, что отладчик проходит только через PageLoad и метод BindGrid, но он не идет по методу «grdAdjAMT_TextChanged». Я также пытался отлаживать метод textChange отдельно, и до сих пор ничего не происходит.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="uID" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" CellPadding="4" ForeColor="#333333" GridLines="None" >
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="ID" SortExpression="ID">
<HeaderTemplate>
<asp:Label ID="Label1" runat="server" Text="ID"></asp:Label><br />
<asp:TextBox ID="txtID" runat="server" OnTextChanged="grdAdjAMT_TextChanged" AutoPostBack="true"></asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("uID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Любой дальнейший совет будет очень признателен. Благодаря
Параметр 'TextChanged' событие возникает [когда текст изменяется между отправками на сервер] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox .textchanged% 28v = vs.110% 29.aspx) - вы ожидаете, что это будет опубликовано после изменения текста на стороне клиента? – barrick
Вы знакомы с методом '__doPostBack' jacascript. Похоже, вам нужно добавить некоторые' if (IsPostBack) {} 'проверки в событии' Page_Load' также 'FYI', вам не нужно вызывать' con.Close(); 'поскольку он вложен внутри' using() {} ' – MethodMan
@barrick, да, это моя цель. Спасибо за ваш ответ. – user3070072