我正在尝试使用sqldatasource在GridView中使用文本框进行搜索,并启用编辑,更新和分页;但是,在我单击 update 成功搜索后,过滤后的GridView没有显示整个GridView,每个数据都显示出来。谢谢,请指教。
Aspx.cs页面:
binaryoperation.count != 0
Html页面:
binaryoperation.count == 1
答案 0 :(得分:0)
您正在从此行的str.length()
控件中离开GridView
控件的数据源:
SqlDataSource
由于在GridView1.DataSourceID = null;
方法中您执行的查询没有BindData()
子句,因此返回所有要绑定到网格的行,如下所示:
WHERE
这有效地破坏了您的搜索条件,因为没有条件(protected void BindData()
{
using (SqlConnection sqlCon = new SqlConnection(ConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT * FROM [Inventory]";
cmd.Connection = sqlCon;
sqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSourceID = null;
GridView1.DataSource = dt;
GridView1.DataBind();
sqlCon.Close();
}//end using
}//end using
}
子句)应用于SQL查询。
您需要WHERE
控制SqlDataSource
支持"搜索"价值而没有。这样做的一种方法是:
SelectCommand
将SelectCommand="SELECT * FROM [Inventory] WHERE ([Type] = @Type OR [Type] = '')"
逻辑添加到OR
子句中将不会过滤掉任何行(假设您的WHERE
值都不为空并且当您省略搜索时(即,搜索文本框)。
就个人而言,我会创建一个返回Type
对象的方法,并在搜索条件中传递,根据是否搜索"来构建两个单独的SQL语句。字符串是空的或不是,像这样:
DataTable
现在,您可以让private DataTable GetData(string searchTerm)
{
DataTable dt = null;
// Check to see if search term is null or empty
if(!string.IsNullOrEmpty(searchTerm)
{
// Build SQL statement with WHERE clause
using (SqlConnection sqlCon = new SqlConnection(ConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT * FROM [Inventory]
WHERE [Type] = @searchTermParameter";
cmd.Parameters.Add(new SqlParameter("@searchTermParameter", searchTerm));
cmd.Connection = sqlCon;
sqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
}//end using
}//end using
}
else
{
// Build SQL statement without WHERE clause,
// because we are not searching for anything
using (SqlConnection sqlCon = new SqlConnection(ConnString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT * FROM [Inventory]";
cmd.Connection = sqlCon;
sqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
}//end using
}//end using
}
return dt;
}
方法接受DataBind
对象,其唯一责任是将数据绑定到DataTable
控件,如下所示:
GridView