程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> asp.net中顯示DataGrid控件列序號的幾種方法

asp.net中顯示DataGrid控件列序號的幾種方法

編輯:關於C#
 

在aps.net中多數據綁定的控件很多,論功能來說,應該屬DataGrid最為齊全,但它沒有提供現成的顯示記錄序號的功能,不過我們可以通過它所帶的一些參數來間接得到序號,下面來看看怎樣得到和顯示序號值計算方式如下:

(1)在後台

DataGrid.CurrentPageIndex * DataGrid.PageSize + e.Item.ItemIndex + 1

(2)在前台

DataGrid1.CurrentPageIndex * DataGrid1.PageSize + Container.ItemIndex + 1

說明:

e表示System.Web.UI.WebControls.DataGridItemEventArgs參數類的實例;

DataGrid1這裡表示前台的一個實例;

DataGrid.CurrentPageIndex:獲取或設置當前顯示頁的索引;

DataGrid.PageSize :獲取或設置要在 DataGrid 控件的單頁上顯示的項數。

 

下面我使用了4種方法來在前台顯示序號,不過都是圍繞上面的計算式展開。

(1) 使用DataGrid的ItemCreated設置值,而前台的單元格可以是綁定列或者模板列(包括空模板);

(2) 使用DataGrid的ItemDataBound設置值,而前台的單元格可以是綁定列或者模板列(包括空模板);

(3) 在前台直接綁定計算表達式;

(4) 在後台類中編寫方法計算表達式由前台頁面類繼承調用。

備注:在數據庫中獲取數據時設置額外的序號列這裡不做討論,我認為這是最糟糕的實現方法。

下面以獲取Northwind數據庫的Customers表的數據為列,顯示如下:


 

下面是WebFormPaging.aspx文件代碼,

<%@ Page language="c#" Codebehind="WebFormPaging.aspx.cs" AutoEventWireup="false" Inherits="AspnetPaging.WebForm1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>WebForm1</title>

<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">

<meta content="C#" name="CODE_LANGUAGE">

<meta content="JavaScript" name="vs_defaultClientScript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">

</HEAD>

<body>

<form id="Form1" method="post" runat="server">

<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="400" align="center" border="1">

<TR>

<TD><asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="100%" AllowPaging="True">

<Columns>

<asp:BoundColumn HeaderText="序號1"></asp:BoundColumn>

<asp:TemplateColumn HeaderText="序號2"></asp:TemplateColumn>

<asp:TemplateColumn HeaderText="序號3">

<ItemTemplate>

<asp:Label ID="itemIndex" runat="server"></asp:Label>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="序號4">

<ItemTemplate>

<%# (DataGrid1.CurrentPageIndex * DataGrid1.PageSize + Container.ItemIndex + 1) %>

</ItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="序號5">

<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 WebForm1 : System.Web.UI.Page

{

private int recordCount = 0;

 

protected System.Web.UI.WebControls.DataGrid DataGrid1;

 

private void Page_Load(object sender, System.EventArgs e)

{

if(!Page.IsPostBack)

{

DataGridDataBind();

}

}

 

//綁定數據

private void DataGridDataBind()

{

DataSet ds = DataAccess.GetCustomersData();

this.DataGrid1.DataSource = ds;

this.DataGrid1.DataBind();

}

 

 

 

#region Web 窗體設計器生成的代碼

override protected void OnInit(EventArgs e)

{

InitializeComponent();

base.OnInit(e);

}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved