首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GridView空值排序,哪位大手帮忙看看?解决办法

2012-06-10 
GridView空值排序,哪位大手帮忙看看?GridView点击列名排序,如果这一列有空值,要求不管是升序还是降序,含有

GridView空值排序,哪位大手帮忙看看?
GridView点击列名排序,如果这一列有空值,要求不管是升序还是降序,含有空值的行始终排在最后。(实际情况是:如果按照升序排序,空值行是排在最前面的)

排序事件

C# code
 protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)    {        string sPage = e.SortExpression;        if (ViewState["SortOrder"].ToString() == sPage)        {            if (ViewState["OrderDire"].ToString() == "Desc")                ViewState["OrderDire"] = "ASC";            else                ViewState["OrderDire"] = "Desc";        }              else        {            ViewState["SortOrder"] = e.SortExpression;        }        BindGridView();    }

页面载入事件
C# code
protected void Page_Load(object sender, EventArgs e)    {        if (ViewState["ddl"] != null)        {            DropDownList1.SelectedValue = ViewState["ddl"].ToString();        }        if (!Page.IsPostBack)        {            ViewState["SortOrder"] = "ProductId";            ViewState["OrderDire"] = "ASC";            ViewState["sql"] = sql;            BindGridView();        }    }

数据绑定函数
C# code
public void BindGridView()    {        sql = ViewState["sql"].ToString();        SqlConnection con = new SqlConnection(str);        try        {            con.Open();            SqlDataAdapter ad = new SqlDataAdapter(sql, con);            DataSet ds = new DataSet();            ad.Fill(ds, "Product");            DataView dv = ds.Tables["Product"].DefaultView;            string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];            dv.Sort = sort;            GridView1.DataSource = dv;            GridView1.DataBind();        }        catch (Exception e)        {            Page.RegisterStartupScript("show", "<script>alert('Error" + e.Message + "')</script>");        }        finally        {            con.Close();        }    }



[解决办法]
你可以这样,取出两个数据集,一个是非空的,一个全空的,排序时对非空的进行排序,然后将全空的追加进去,形成 一个新数据集,然后绑定
[解决办法]
不是很确定,把所有的空值替换成"\uf000",一般而言,它自然就排到最后去了。
[解决办法]
写两条取值sql语句(一条取不为空的,另外是空的) 一起执行 用dataset返回 然后 对不为空的进行排序 之后再合成一个数据集
[解决办法]
分个组,一个为空一个不为空,只对不为空的数据进行排序,然后将为空的数据追加到排序后的结果上去。

热点排行