• gridview排序加箭头(二)


    gridview排序的时候,在.NET里是不能被标注的,下面提供如下方法:主要是显示的时候进行了下判断,然后进行不同的排序,这样就给这个gridview加上了排序的箭头,有意思的是<font face='Webdings'>个样式,如果你对<font face='Webdings'>不是很了解,下面是提供的连接:

    http://www.cnblogs.com/freeton/archive/2009/06/27/1512139.html

    注意:

    Aspx页面:

    设置排序:SortExpression="zhiwei"(给相应的字段设置)

    .cs

    开始设置的默认的排序状态用ViewState进行设置,写在!IsPostBack下面。

    主要用到:GVpositionrecods_RowCreated与GVpositionrecods_Sorting事件

     页面
    代码
    <asp:GridView AllowSorting="True" ID="GVpositionrecods" runat="server" PageSize="12"
                        AllowPaging
    ="True" EmptyDataText="没有任何数据可以显示" Width="99%" AutoGenerateColumns="False"
                        OnRowDataBound
    ="GVpositionrecods_RowDataBound" OnSelectedIndexChanged="GVpositionrecods_SelectedIndexChanged"
                        OnSelectedIndexChanging
    ="GVpositionrecods_SelectedIndexChanging" OnPageIndexChanging="GVpositionrecods_PageIndexChanging"
                        OnRowCreated
    ="GVpositionrecods_RowCreated" OnSorting="GVpositionrecods_Sorting">
                        
    <Columns>
                            
    <asp:TemplateField HeaderText="职位" SortExpression="zhiwei">
                                
    <ItemTemplate>
                                    
    <a href='throwseeen2.aspx?qiyeid=<%#Eval("qiyeid")%>&id=<%#Eval("ORDER_FORM_ID") %>'>
                                        
    <%#Eval("zhiwei"%>
                                    
    </a>
                                
    </ItemTemplate>
                                
    <ItemStyle HorizontalAlign="Center" />
                            
    </asp:TemplateField>
                            
    <asp:TemplateField HeaderText="企业名称" SortExpression="qiyeid">
                                
    <ItemTemplate>
                                    
    <a href='seeenlist.aspx?getidforen=<%#Eval("qiyeid")%>'>
                                        
    <%#Eval("qiye")%>
                                    
    </a>
                                
    </ItemTemplate>
                                
    <ItemStyle HorizontalAlign="Center" />
                            
    </asp:TemplateField>
                            
    <asp:BoundField DataField="COUNT" HeaderText="人数" SortExpression="COUNT">
                                
    <ItemStyle HorizontalAlign="Center" />
                            
    </asp:BoundField>
                            
    <asp:BoundField DataField="STAR_TIME" SortExpression="STAR_TIME" HeaderText="发布时间"
                                DataFormatString
    ="{0:yyyy-MM-dd}" HtmlEncode="False">
                                
    <ItemStyle HorizontalAlign="Center" />
                            
    </asp:BoundField>
                            
    <asp:BoundField DataField="END_TIME" SortExpression="END_TIME" HeaderText="结束时间"
                                DataFormatString
    ="{0:yyyy-MM-dd}" HtmlEncode="False">
                                
    <ItemStyle HorizontalAlign="Center" />
                            
    </asp:BoundField>
                            
    <asp:BoundField DataField="flag" HeaderText="状态">
                                
    <ItemStyle HorizontalAlign="Center" />
                            
    </asp:BoundField>
                        
    </Columns>
                        
    <AlternatingRowStyle BackColor="#E2F8FF"></AlternatingRowStyle>
                        
    <HeaderStyle HorizontalAlign="Center" BackColor="#99CCFF"></HeaderStyle>
                        
    <PagerStyle CssClass="cssPager" />
                    
    </asp:GridView>

     默认排序设置

    代码
     protected void Page_Load(object sender, EventArgs e)
        {
            
    if (Session["student"== null)
            {
                Response.Write(
    "<script>alert('页面已过期,请重新登录!');window.parent.frames.location.href='../Default.aspx'</script>");
            }
            
    else if (!IsPostBack && Session["t_resume_info"!= null)
            {
                ViewState[
    "sortExp"= "STAR_TIME";//默认排序的字段
                ViewState["sortDir"= "Desc";// 字段是安什么排序的
                
    //绑定数据源
                bind();

                
    this.lbcontent.Visible = false;
            }
            
    else if (Session["t_resume_info"== null)
            {
                
    this.lbcontent.Text = "您还没有任何录取的信息";
            }
        }

     绑定的数据源

    代码
    public void bind()
        {
            
    //得到对应的简历的ID,从SN里面查看值
            ccwu.Model.T_RESUME_INFO listTemp = (ccwu.Model.T_RESUME_INFO)Session["t_resume_info"];
            ccwu.Model.T_ORDER_RESUME torderresume 
    = new ccwu.Model.T_ORDER_RESUME();
            
    int id = Convert.ToInt32(listTemp.ID.ToString());
            
    //得到对应的简历的ID,从SN里面查看值


            ccwu.DAL.T_JOB jobdal 
    = new ccwu.DAL.T_JOB();
            
    string where = "RESUME_INFO_ID='" + id.ToString() + "'";


            DataSet ds 
    = jobdal.getlistResume(where);
            DataView dv 
    = new DataView(ds.Tables[0]);
            dv.Sort 
    = ViewState["sortExp"].ToString() + " " + ViewState["sortDir"].ToString();
            GVpositionrecods.DataSource 
    = dv;
            
    this.GVpositionrecods.DataBind();
            
    if (this.GVpositionrecods.Rows.Count > 0)
            {

            }
            
    else//如果数据源是空的
            {
                
    //表头的设置
                GridViewRow row = new GridViewRow(-1-1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
                
    foreach (DataControlField field in this.GVpositionrecods.Columns)
                {
                    TableCell cell 
    = new TableCell();
                    cell.Text 
    = field.HeaderText;
                    cell.Width 
    = field.HeaderStyle.Width;
                    cell.Height 
    = field.HeaderStyle.Height;
                    cell.ForeColor 
    = field.HeaderStyle.ForeColor;
                    cell.Font.Size 
    = field.HeaderStyle.Font.Size;
                    cell.Font.Bold 
    = field.HeaderStyle.Font.Bold;
                    cell.Font.Name 
    = field.HeaderStyle.Font.Name;
                    cell.Font.Strikeout 
    = field.HeaderStyle.Font.Strikeout;
                    cell.Font.Underline 
    = field.HeaderStyle.Font.Underline;
                    cell.BackColor 
    = field.HeaderStyle.BackColor;
                    cell.VerticalAlign 
    = field.HeaderStyle.VerticalAlign;
                    cell.HorizontalAlign 
    = field.HeaderStyle.HorizontalAlign;
                    cell.CssClass 
    = field.HeaderStyle.CssClass;
                    cell.BorderColor 
    = field.HeaderStyle.BorderColor;
                    cell.BorderStyle 
    = field.HeaderStyle.BorderStyle;
                    cell.BorderWidth 
    = field.HeaderStyle.BorderWidth;
                    row.Cells.Add(cell);
                }
                TableItemStyle headStyle 
    = this.GVpositionrecods.HeaderStyle;
                TableItemStyle emptyStyle 
    = GVpositionrecods.EmptyDataRowStyle;
                emptyStyle.Width 
    = headStyle.Width;
                emptyStyle.Height 
    = headStyle.Height;
                emptyStyle.ForeColor 
    = headStyle.ForeColor;
                emptyStyle.Font.Size 
    = headStyle.Font.Size;
                emptyStyle.Font.Bold 
    = headStyle.Font.Bold;
                emptyStyle.Font.Name 
    = headStyle.Font.Name;
                emptyStyle.Font.Strikeout 
    = headStyle.Font.Strikeout;
                emptyStyle.Font.Underline 
    = headStyle.Font.Underline;
                emptyStyle.BackColor 
    = headStyle.BackColor;
                emptyStyle.VerticalAlign 
    = headStyle.VerticalAlign;
                emptyStyle.HorizontalAlign 
    = headStyle.HorizontalAlign;
                emptyStyle.CssClass 
    = headStyle.CssClass;
                emptyStyle.BorderColor 
    = headStyle.BorderColor;
                emptyStyle.BorderStyle 
    = headStyle.BorderStyle;
                emptyStyle.BorderWidth 
    = headStyle.BorderWidth;
                
    //空白行的设置
                GridViewRow row1 = new GridViewRow(0-1, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);

                TableCell cell1 
    = new TableCell();
                cell1.Text 
    = "没有任何数据可以显示";
                cell1.BackColor 
    = System.Drawing.Color.White;
                row1.Cells.Add(cell1);
                cell1.ColumnSpan 
    = 6;//合并列

                
    if (this.GVpositionrecods.Controls.Count == 0)
                {
                    GVpositionrecods.Page.Response.Write(
    "<script language='javascript'>alert('必须在初始化表格类之前执行DataBind方法并设置EmptyDataText属性不为空!');</script>");
                }
                
    else
                {
                    GVpositionrecods.Controls[
    0].Controls.Clear();
                    
    this.GVpositionrecods.Controls[0].Controls.AddAt(0, row);
                    
    this.GVpositionrecods.Controls[0].Controls.AddAt(1, row1);
                }
            }

        }

     关键代码

    代码
     protected void GVpositionrecods_RowCreated(object sender, GridViewRowEventArgs e)
        {
            
    if (e.Row.RowType == DataControlRowType.Header)//如果是表头,则执行如下操作
            {
                
    foreach (TableCell tc in e.Row.Cells)
                {
                    
    //这种方法直接新加一个控件,也可以换成图片               
                    if (tc.Controls.Count > 0)//这里要判断一下此时是不是已经生成了linkbutton
                    {
                        
    string s1 = ((LinkButton)tc.Controls[0]).Text;
                        
    //样式Webdings是123都有自己对应的图片
                        ((LinkButton)tc.Controls[0]).Text = s1.Replace(s1, s1 + "<font face='Webdings'>5</font>");
                        
    //倒序的样式
                        if (tc.Controls.Count > 0 && tc.Controls[0].GetType().ToString() == "System.Web.UI.WebControls.DataControlLinkButton")
                        {
                            
    if (((LinkButton)tc.Controls[0]).CommandArgument.ToString() == ViewState["sortExp"].ToString())
                            {
                                
    string s2 = ((LinkButton)tc.Controls[0]).Text;
                                
    if (ViewState["sortDir"].ToString() == "Desc")
                                {
                                    ((LinkButton)tc.Controls[
    0]).Text = s2.Replace("5""6");
                                }
                            }
                        }
                    }
                }
            }
        }

     当点击列头的时候

    代码
    protected void GVpositionrecods_Sorting(object sender, GridViewSortEventArgs e)
        {
            
    string sPage = e.SortExpression;

            
    if (ViewState["sortExp"].ToString() == sPage)
            {
                
    if (ViewState["sortDir"].ToString() == "Desc")
                    ViewState[
    "sortDir"= "ASC";
                
    else
                    ViewState[
    "sortDir"= "Desc";
            }
            
    else
            {
                ViewState[
    "sortExp"= e.SortExpression;
            }
            bind();
        }
  • 相关阅读:
    8.1.1 播放合成声音
    CSS 用伪类 :after 选择器清除浮动
    javascript 拖拽
    javascript 回到顶端
    用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率
    【风马一族_代码英语】代码英语之五
    【风马一族_代码英语】代码英语之四
    【风马一族_代码英语】代码英语之三
    【风马一族_Android】第4章Android常用基本控件
    【风马一族_日常灵感】在美国得到的人生感悟
  • 原文地址:https://www.cnblogs.com/muer/p/1697213.html
Copyright © 2020-2023  润新知