当前位置:编程学习 > C#/ASP.NET >>

GridView按序排列问题

刚到公司接手网站维护修改工作,前任负责人已经走开,现发现显示数据时,没有按倒序排列显示,求救!
相关代码如下:
aspx页面:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" DataKeyNames="ARTICLE_ID" OnRowDeleting="GridView1_RowDeleting">
                  <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                  <Columns>
                      <asp:BoundField DataField="ARTICLE_ID" HeaderText="新闻ID" SortExpression="ARTICLE_ID" />
                      <asp:BoundField DataField="COLUMN_NAME" HeaderText="新闻栏目" SortExpression="COLUMN_NAME" />
                      <asp:BoundField DataField="ARTICLE_TITLE" HeaderText="新闻标题" SortExpression="ARTICLE_TITLE" />
                      <asp:BoundField DataField="Article_author" HeaderText="新闻作者" SortExpression="Article_author" />
                      <asp:TemplateField HeaderText="编辑">
                          <ItemTemplate>
                              <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete"
                                  OnClientClick='return confirm("确认要删除吗?")' Text="删除"></asp:LinkButton>
                          </ItemTemplate>
                      </asp:TemplateField>   
                      <asp:HyperLinkField DataNavigateUrlFields="Article_id" DataNavigateUrlFormatString="NewsInfo.aspx?newsid={0}"
                          HeaderText="详细" Text="详细" />
                  </Columns>
                  <RowStyle BackColor="#EFF3FB" />
                  <EditRowStyle BackColor="#2461BF" />
                  <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                  <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                  <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                  <AlternatingRowStyle BackColor="White" />
              </asp:GridView>

aspx.cs文件如下:
public partial class dressAdmin_editNews : System.Web.UI.Page
{
    TSqlDB tSql = new TSqlDB();
    SpPage sp = new SpPage();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bind();
        }   
    }


    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int UID = int.Parse(GridView1.DataKeys[e.RowIndex]["ARTICLE_ID"].ToString());

        tSql.goSql("delete from T_ARTICLE where ARTICLE_ID = " + UID);

        bind();

        
    }
--------------------编程问答-------------------- 我今天眼睛花了。帮你顶吧 --------------------编程问答-------------------- 自己顶上去 --------------------编程问答-------------------- using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using TedaBus.RFPrincipal;

/// <summary>
/// 行政用车申请列表页面
/// 创建:叶明
/// 创建日期:2007-03-09
/// 修改记录:
/// </summary>
public partial class OfficeUseBus_ApplyUseBusList : SimpleCode
{
    DataSet ds = new DataSet("BusUseRecord"); //存储申请记录的数据集

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindUseBusRecordList();
        }
    }
    
    protected void btnShowFilter_Click(object sender, EventArgs e)
    {
        //设置筛选Panel的可见性
        pnlFilter.Visible = !pnlFilter.Visible;
    }

    /// <summary>
    /// 绑定行政用车记录GridView
    /// 涉及数据表:OfficeUseBusRecord
    /// </summary>
    private void BindUseBusRecordList()
    {
        string sql = "SELECT * FROM OfficeUseBusRecord WHERE valid = 1 AND DeptID = " + GetCurrentUserDeptID();
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TedabusMIS"].ToString());
        SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
        sda.Fill(ds);
        DataView dv = ds.Tables[0].DefaultView;
        //对于数据视图的RowFilter选项,我先将其赋值为一个总是为真的条件,然后根据用户的选择逐步增加其限制
        string filterString = "1 = 1";
        //处理开始查询的日期
        if (ViewState["StartDate"] != null)
        {
            if (ViewState["StartDate"].ToString() != string.Empty)
            {
                filterString += " and UserBusDate > #" + ViewState["StartDate"].ToString() + "#";
            }
        }
        //处理最晚查询的日期
        if (ViewState["EndDate"] != null)
        {
            if (ViewState["EndDate"].ToString() != string.Empty)
            {
                filterString += " and UserBusDate < #" + ViewState["EndDate"].ToString() + "#";
            }
        }

        dv.RowFilter = filterString;

        //处理GridView的排序
        if (ViewState["sort"] != null)
        { 
            if(ViewState["sort"].ToString() != string.Empty)
            {
                dv.Sort = ViewState["sort"].ToString();
            }
            else
            {
                dv.Sort = "";
            }
        }

        gvUseBusRecord.DataSource = dv;
        gvUseBusRecord.DataBind();
    }
    
    protected void gvUseBusRecord_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow) //只处理数据行
        {
            //将GridView中的日期显示为短日期
            DateTime dt = DateTime.Parse(e.Row.Cells[0].Text);
            e.Row.Cells[0].Text = dt.ToShortDateString();
            //把申请的批准状态映射为中文
            DataRowView row = (DataRowView)e.Row.DataItem;
            e.Row.Cells[0].ToolTip = row["RecordID"].ToString();
            if ((int)row["Status"] == 0)
            {
                e.Row.Cells[5].Text = "未批准";
                e.Row.Cells[5].ForeColor = System.Drawing.Color.Red;
            }
            else if ((int)row["Status"] == 1)
            {
                e.Row.Cells[5].Text = "已批准";
                e.Row.Cells[5].ForeColor = System.Drawing.Color.Green;
                //如果申请已经批准了,就不能撤销了
                LinkButton lb = (LinkButton)e.Row.Cells[7].Controls[0];
                lb.Enabled = false;
            }
            //设置查看LinkButton的PostUrl,这样用户点击的时候会转到申请查看的页面
            LinkButton lbView = (LinkButton)e.Row.Cells[8].FindControl("lbView");
            lbView.PostBackUrl = "ViewBusUseApply.aspx?RecordID=" + row["RecordID"].ToString();
            //为撤销按钮添加确认对话框
            LinkButton lbDelete = (LinkButton)e.Row.Cells[7].Controls[0];
            lbDelete.Attributes.Add("OnClick","return confirm('您是否要撤销这个申请?');");
        }
    }
    
    protected void gvUseBusRecord_Sorting(object sender, GridViewSortEventArgs e)
    {
        //把GridView的排序表达式存储在ViewState中,然后重新绑定GridView
        ViewState["sort"] = e.SortExpression;
        BindUseBusRecordList();
    }

    protected void gvUseBusRecord_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //把GridVew得到PageIndex设置为新值,然后重新绑定GridView
        gvUseBusRecord.PageIndex = e.NewPageIndex;
        BindUseBusRecordList();
    }
    
    protected void btnSetFilter_Click(object sender, EventArgs e)
    {
        //用户点击设置筛选条件的按钮时,我把筛选条件存入ViewState,具体的工作,绑定GridView的时候会处理
        ViewState["StartDate"] = txtStart.Text;
        ViewState["EndDate"] = txtEnd.Text;
        BindUseBusRecordList();
    }
    
    protected void gvUseBusRecord_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        //点击删除的时候,只是将Valid字段设置为0,并没有物理删除
        //如果其他表中出现过的车辆被"删除",可以避免出现错误
        string sql = "UPDATE OfficeUseBusRecord SET valid = 0 WHERE RecordID = " + gvUseBusRecord.Rows[e.RowIndex].Cells[0].ToolTip ;
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TedabusMIS"].ToString());
        SqlCommand cmd = new SqlCommand(sql, conn);
        conn.Open();
        if(cmd.ExecuteNonQuery() > 0)
        {
            BindUseBusRecordList();
            RegisterStartupScript("message","<script language='JavaScript'>alert('删除成功');</script>");
        }
        else
        {
            RegisterStartupScript("message","<script language='JavaScript'>alert('删除失败');</script>");
        }
        conn.Close();
        conn.Dispose();
    }

    /// <summary>
    /// 利用当前用户的登录名获取当前用户所在的部门编号
    /// 涉及数据表:EmployeeBaseInfo
    /// </summary>
    /// <returns>当前用户所在的部门编号</returns>
    private string GetCurrentUserDeptID()
    {
        string result = "";
        //获取当前登录的用户的员工编号
        //P.S. 如果无法得到当前用户所在的部门,请在这里Response一下,很可能就是下面的变量没有得到
        string userName = ((SitePrincipal)Context.User).UserCardNum.ToString();

        if (userName != string.Empty)
        {
            string sql = "SELECT DepID FROM EmployeeBaseInfo WHERE EmployeeNo ='" + userName + "'";
            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TedabusMIS"].ToString());
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                //因为只有一个字段,我用的是SqlCommand的ExecuteScalar方法
                result = cmd.ExecuteScalar().ToString();
            }
            catch
            {
                result = "";
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
                conn.Dispose();
            }
        }
        //Response.Write("dept:" + result + " user " + userName);
        return result;
    }
}
--------------------编程问答-------------------- 在bind里面排序
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,