Discuz!NT
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
商都网教育宝典宝库

发表新主题 回复该主题
本主题被查看825次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: GridView中实现并列排名的例子
张小峰
超级版主
UID: 14
来自:
精华: 4
积分: 313
帖子: 285
注册: 2007-8-23 10:27:00
状态: 离线
威望: 8.00
金钱: 75.55 元
只看楼主 2007-09-06 11:39
GridView中实现并列排名的例子
Access数据库版本

<%@ Page Language="C#" AutoEventWireup="true" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<script runat="server"> 
  public int TrapezoidIndex = 1;
  int LastNumer = 0;
  protected void Page_Load( object sender, EventArgs e )
  {
    //ASPNET20Book.mdb数据库参见《ASP.NET 2.0应用开发技术》一书的光盘
    string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\ASPNET20Book.mdb;Persist Security Info=True";
    System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection(ConnectionString);
    cn.Open();
    string sql = "select * from [Score] Order BY Shuxue DESC";
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, cn);
    System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    GridView1.DataSource = dr;
    GridView1.DataBind();
    dr.Close();
    cmd.Dispose();
    cn.Dispose();
  }

  protected void GridView1_RowCreated( object sender, GridViewRowEventArgs e )
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      System.Data.Common.DbDataRecord db = (System.Data.Common.DbDataRecord)e.Row.DataItem;
      int Shuxue = Int32.Parse(db["Shuxue"].ToString());
      if (e.Row.RowIndex == 0)
      {
        LastNumer = Shuxue;
      }
      if (LastNumer != Shuxue)
      {
        TrapezoidIndex = e.Row.RowIndex + 1;
      }
      LastNumer = Shuxue;
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>GridView并列排名的例子</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCreated="GridView1_RowCreated">
      <Columns>
        <asp:TemplateField HeaderText="数据序号">
          <ItemTemplate>
            <%#Container.DataItemIndex + 1%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="学生姓名">
          <ItemTemplate>
            <%#Eval("UserName")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="数学">
          <ItemTemplate>
            <%#Eval("Shuxue")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="排名">
          <ItemTemplate>
            <%#TrapezoidIndex%>
          </ItemTemplate>
        </asp:TemplateField>
      </Columns>
    </asp:GridView>
  </form>
</body>
</html>
SQL Server数据库版本

<%@ Page Language="C#" AutoEventWireup="true"%>
<script runat="server"> 
  public int TrapezoidIndex = 1;
  int LastNumer = 0;
  protected void Page_Load( object sender, EventArgs e )
  {
    string ConnectionString = "Persist Security Info=False;User ID=sa;Password=;Initial Catalog=Book;Server=.;";
    System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(ConnectionString);
    cn.Open();
    string sql = "select *,(Yuwen + Shuxue + Yingyu) As TotalScore from [Score] Order BY TotalScore DESC";
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, cn);
    System.Data.SqlClient.SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    GridView1.DataSource = dr;
    GridView1.DataBind();
    dr.Close();
    cmd.Dispose();
    cn.Dispose();
  }

  protected void GridView1_RowCreated( object sender, GridViewRowEventArgs e )
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      System.Data.Common.DbDataRecord db = (System.Data.Common.DbDataRecord)e.Row.DataItem;
      int TotalScore = Int32.Parse(db["TotalScore"].ToString());
      if (e.Row.RowIndex == 0)
      {
        LastNumer = TotalScore;
      }
      if (LastNumer != TotalScore)
      {
        TrapezoidIndex = e.Row.RowIndex + 1;
      }
      LastNumer = TotalScore;
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>GridView并列排名的例子</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCreated="GridView1_RowCreated"
      Width="600px">
      <Columns>
        <asp:TemplateField HeaderText="数据序号">
          <ItemTemplate>
            <%#Container.DataItemIndex + 1%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="学生姓名">
          <ItemTemplate>
            <%#Eval("UserName")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="语文">
          <ItemTemplate>
            <%#Eval("Yuwen")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="数学">
          <ItemTemplate>
            <%#Eval("Shuxue")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="英语">
          <ItemTemplate>
            <%#Eval("Yingyu")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="总分">
          <ItemStyle Font-Bold="true" ForeColor="red" />
          <ItemTemplate>
            <%#Eval("TotalScore")%>
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="排名">
          <ItemTemplate>
            <%#TrapezoidIndex%>
          </ItemTemplate>
        </asp:TemplateField>
      </Columns>
    </asp:GridView>
  </form>
</body>
</html>
#1  
发表新主题 回复该主题
本主题被查看825次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-09-07 13:38:18

版权所有 商都网教育宝典
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.064 seconds