谢谢你啊老师,我给你留言了,你没有回,所以我就在论坛上发帖了。你说的:把排序条件传到sql中,根据这个order by条件获取排序后的当前页数据即可。 public static DataSet GetCurrentPage(string sqlStr, int pageIndex, int pageSize,string outtable,SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, sqlStr, cmdParms); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
现在问题就是怎么在不影响这个AspNetPager分页的情况下,实现根据条件查询出来的数据的排序。
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, sqlStr, cmdParms);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet dataset = new DataSet();
//设置导入的起始地址
try
{
int firstPage = pageIndex * pageSize;
da.Fill(dataset, firstPage, pageSize, outtable);
cmd.Parameters.Clear();
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return dataset;
}
}
}这是我原来的方法,现在根据你的建议,再加个方法,方法里再加个排序的条件。可是:
da.Fill(dataset, firstPage, pageSize, outtable);
return dataset;
这里的dataset怎么和那个排好序的DataSet建立联系呢?
是你做的吗? 唉,伤心的一踏糊涂,我公司好好的一个小伙子在做项目时,就是因为这个控件不支持distinct而伤心不再写程序.
1,排序的条件你可以默认写在存储过程里。
“按姓名排序”、“按创建时间”
如果是默认的排序是“按姓名排序”,你在界面上又想看到“按创建时间排序”的结果的话,就必须。。
2,还有一种
(string wherestr, string orderStr, int kai, int jie)
/// <summary>
/// 获得数据列表(查询条件)————————分页控件
/// </summary>
public DataSet GetListToPage(string strV_CompName, int pageIndex, int pageSize, string sortExpression, string direction)
{
StringBuilder strSql = new StringBuilder(); strSql.Append("select * ");
strSql.Append(" FROM tbl_Company ");
strSql.Append(" where I_OperTpye=1"); if (strV_CompName != "")
{
strSql.Append(" and V_Name like @V_Name");
}
if (sortExpression != "")
{
strSql.Append(" order by @sortExpression");
}
if (direction != "")
{
strSql.Append(" @direction");
}
SqlParameter[] parameters = {
new SqlParameter("@V_Name", SqlDbType.VarChar),
new SqlParameter("@sortExpression", SqlDbType.VarChar),
new SqlParameter("@direction", SqlDbType.VarChar),
};
parameters[0].Value = "%" + strV_CompName + "%";
parameters[1].Value = sortExpression;
parameters[2].Value = direction;
return DBUtility.DbHelperSQL.GetCurrentPage(strSql.ToString(),pageIndex,pageSize,"onetable",parameters);
}我在order by 后面传参数怎么不好用,老是报错。GridView的排序事件:
protected void GVInfo_Sorting(object sender, GridViewSortEventArgs e)
{
ViewState["orderName"] = e.SortExpression;
if (GridViewSortDirection == SortDirection.Ascending) //设置排序方向
{
GridViewSortDirection = SortDirection.Descending;
ViewState["orderId"] = " DESC"; }
else
{
GridViewSortDirection = SortDirection.Ascending;
ViewState["orderId"] = " ASC";
}
GVBind(ViewState["orderName"].ToString(), ViewState["orderId"].ToString()); }