发布网友 发布时间:2023-11-03 07:53
共1个回答
热心网友 时间:2024-12-03 14:42
在中多数据绑定的控件很多 *能来说 应该属DataGrid最为齐全 但它没有提供现成的显示记录序号的功能 不过我们可以通过它所带的一些参数来间接得到序号 下面来看看怎样得到和显示序号值计算方式如下
( )在后台
DataGrid CurrentPageIndex * DataGrid PageSize + e Item ItemIndex +
( )在前台
DataGrid CurrentPageIndex * DataGrid PageSize + Container ItemIndex +
说明
e表示System Web UI WebControls DataGridItemEventArgs参数类的实例
DataGrid 这里表示前台的一个实例
DataGrid CurrentPageIndex 获取或设置当前显示页的索引
DataGrid PageSize 获取或设置要在 DataGrid 控件的单页上显示的项数
下面我使用了 种方法来在前台显示序号 不过都是围绕上面的计算式展开
( ) 使用DataGrid的ItemCreated设置值 而前台的单元格可以是绑定列或者模板列(包括空模板)
( ) 使用DataGrid的ItemDataBound设置值 而前台的单元格可以是绑定列或者模板列(包括空模板)
( ) 在前台直接绑定计算表达式
( ) 在后台类中编写方法计算表达式由前台页面类继承调用
备注 在数据库中获取数据时设置额外的序号列这里不做讨论 我认为这是最糟糕的实现方法
下面以获取Northwind数据库的Customers表的数据为列 显示如下
序号
序号
序号
序号
序号
CustomerID
LONEP
MAGAA
MAISD
MEREP
MORGK
NORTS
OCEAN
OLDWO
OTTIK
PARIS
下面是WebFormPaging aspx文件代码
<%@ Page language= c# Codebehind= WebFormPaging aspx cs AutoEventWireup= false Inherits= AspnetPaging WebForm %>
<!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >
<HTML>
<HEAD>
<title>WebForm </title>
<meta content= Microsoft Visual Studio NET name= GENERATOR >
<meta content= C# name= CODE_LANGUAGE >
<meta content= JavaScript name= vs_defaultClientScript >
<meta content= name= vs_targetSchema >
</HEAD>
<body>
<form id= Form method= post runat= server >
<TABLE id= Table cellSpacing= cellPadding= width= align= center border= >
<TR>
<TD><asp:datagrid id= DataGrid runat= server AutoGenerateColumns= False Width= % AllowPaging= True >
<Columns>
<asp:BoundColumn HeaderText= 序号 ></asp:BoundColumn>
<asp:TemplateColumn HeaderText= 序号 ></asp:TemplateColumn>
<asp:TemplateColumn HeaderText= 序号 >
<ItemTemplate>
<asp:Label ID= itemIndex runat= server ></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText= 序号 >
<ItemTemplate>
<%# (DataGrid CurrentPageIndex * DataGrid PageSize + Container ItemIndex + ) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText= 序号 >
<ItemTemplate>
<%# GetRecordIndex( Container ItemIndex ) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField= CustomerID HeaderText= CustomerID ></asp:BoundColumn>
</Columns>
<PagerStyle Mode= NumericPages ></PagerStyle>
</asp:datagrid></TD>
</TR>
<TR>
<TD></TD>
</TR>
<TR>
<TD></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
后台WebFormPaging aspx cs代码如下
using System;
using System Collections;
using System ComponentModel;
using System Data;
using System Drawing;
using System Web;
using System Web SessionState;
using System Web UI;
using System Web UI WebControls;
using System Web UI HtmlControls;
namespace AspnetPaging
{
public class WebForm : System Web UI Page
{
private int recordCount = ;
protected System Web UI WebControls DataGrid DataGrid ;
private void Page_Load(object sender System EventArgs e)
{
if(!Page IsPostBack)
{
DataGridDataBind();
}
}
//绑定数据
private void DataGridDataBind()
{
DataSet ds = DataAccess GetCustomersData();
this DataGrid DataSource = ds;
this DataGrid DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 不要使用代码编辑器修改
/// 此方法的内容
/// </summary>
private void InitializeComponent()
{
this DataGrid ItemCreated += new System Web UI WebControls DataGridItemEventHandler(this DataGrid _ItemCreated);
this DataGrid PageIndexChanged += new System Web UI WebControls DataGridPageChangedEventHandler(this DataGrid _PageIndexChanged);
this DataGrid ItemDataBound += new System Web UI WebControls DataGridItemEventHandler(this DataGrid _ItemDataBound);
this Load += new System EventHandler(this Page_Load);
}
#endregion
//翻页
private void DataGrid _PageIndexChanged(object source System Web UI WebControls DataGridPageChangedEventArgs e)
{
DataGrid CurrentPageIndex = e NewPageIndex;
DataGridDataBind();
}
//获取当前项
protected int GetRecordIndex(int itemIndex)
{
return (DataGrid CurrentPageIndex * DataGrid PageSize + itemIndex + );
}
private void DataGrid _ItemCreated(object sender System Web UI WebControls DataGridItemEventArgs e)
{
DataGrid dg = (DataGrid)sender;
if(e Item ItemType == ListItemType Item || e Item ItemType == ListItemType AlternatingItem)
{
e Item Cells[ ] Text = (dg CurrentPageIndex * dg PageSize + e Item ItemIndex + ) ToString();
e Item Cells[ ] Text = (dg CurrentPageIndex * dg PageSize + e Item ItemIndex + ) ToString();
}
}
private void DataGrid _ItemDataBound(object sender System Web UI WebControls DataGridItemEventArgs e)
{
DataGrid dg = (DataGrid)sender;
if(e Item ItemType == ListItemType Item || e Item ItemType == ListItemType AlternatingItem)
{
((Label)e Item FindControl( itemIndex )) Text = (dg CurrentPageIndex * dg PageSize + e Item ItemIndex + ) ToString();
}
}
}
数据层代码如下
using System;
using System Data;
using System Data SqlClient;
using System Configuration;
namespace AspnetPaging
{
public class DataAccess
{
private static string connString = ConfigurationSettings AppSettings[ ConnString ];
private DataAccess()
{
}
public static DataSet GetCustomersData()
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand m = new SqlCommand( GetCustomers conn);
m CommandType = CommandType StoredProcere;
SqlDataAdapter dataAdapter = new SqlDataAdapter(m);
DataSet ds = new DataSet();
dataAdapter Fill(ds);
return ds;
}
}
}
lishixin/Article/program/net/201311/12926