日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

asp.net中显示DataGrid控件列序号的几种方法

發布時間:2023/11/27 生活经验 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net中显示DataGrid控件列序号的几种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

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)???????? 使用DataGridItemCreated設置值,而前臺的單元格可以是綁定列或者模板列(包括空模板)

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

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

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

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

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

序號1

序號2

序號3

序號4

序號5

CustomerID

51

51

51

51

51

LONEP

52

52

52

52

52

MAGAA

53

53

53

53

53

MAISD

54

54

54

54

54

MEREP

55

55

55

55

55

MORGK

56

56

56

56

56

NORTS

57

57

57

57

57

OCEAN

58

58

58

58

58

OLDWO

59

59

59

59

59

OTTIK

60

60

60

60

60

PARIS

1?2?3?4?5?6?7?8?9?10

下面是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);

???????? }

????????

???????? /// <summary>

???????? /// 設計器支持所需的方法 - 不要使用代碼編輯器修改

???????? /// 此方法的內容。

???????? /// </summary>

???????? private void InitializeComponent()

???????? {???

????????????? this.DataGrid1.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemCreated);

????????????? this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);

????????????? this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);

????????????? this.Load += new System.EventHandler(this.Page_Load);

???????? }

???????? #endregion

???????? //翻頁

???????? private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)

???????? {

????????????? DataGrid1.CurrentPageIndex = e.NewPageIndex;

????????????? DataGridDataBind();

???????? }

???????? //獲取當前項

???????? protected int GetRecordIndex(int itemIndex)

???????? {

????????????? return (DataGrid1.CurrentPageIndex * DataGrid1.PageSize + itemIndex + 1);

???????? }

?????????????????? private void DataGrid1_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[0].Text = (dg.CurrentPageIndex * dg.PageSize + e.Item.ItemIndex + 1).ToString();

?????????????????? e.Item.Cells[1].Text = (dg.CurrentPageIndex * dg.PageSize + e.Item.ItemIndex + 1).ToString();

????????????? }

???????? }

???????? private void DataGrid1_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 + 1).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 comm = new SqlCommand("GetCustomers",conn);

????????????? comm.CommandType = CommandType.StoredProcedure;

????????????? SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);

????????????? DataSet ds = new DataSet();

????????????? dataAdapter.Fill(ds);

????????????? return ds;

???????? }

???? }

}

總結,上面的四種方法前兩種其實處理起來是一樣的,只是處理的時間不同而已;對于第三種我認為最簡單,直接在前臺頁面綁定,不需要額外的輔助;對于第四種的方法綁定到前臺我認為最為靈活,需要注意的是GetRecordIndex方法需要protectedpublic,使它的繼承類能訪問的到。

總結

以上是生活随笔為你收集整理的asp.net中显示DataGrid控件列序号的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。