成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>開發(fā)編程>>VS.NET>>新聞內容
如何給DataGrid添加自動增長列
作者:佚名 發(fā)布時間:2004-6-21 11:27:08 文章來源:西部E網

  我想我們都知道在數(shù)據(jù)庫中如何添加自增長列,我們可以將這個自增長列綁定到DataGrid上使得用戶方便的知道現(xiàn)在是第幾行,今天我介紹一種不用數(shù)據(jù)庫就可以簡單顯示出自增長列的方法,有人可能會說既然數(shù)據(jù)庫支持我們?yōu)槭裁催@樣做?我想有如下的兩個理由:1、不是所有的表都有自增長列。2、當自增長列不自動復制的時候會出現(xiàn)斷號的現(xiàn)象,即使復制這也是有可能發(fā)生的。但是先要說明的是這個方法只能顯示出來當前頁的序號,也就是說如果有分頁它只能標記當前這一頁的序號。如果要同樣實現(xiàn)分頁的功能我想使用數(shù)據(jù)庫要比這種方法簡單一些,因為如果還是用這個方法那么將要處理狀態(tài),這里我不考慮這種方法,但是在文章的結尾我將給出一個數(shù)據(jù)庫的解決方案。

  好了下面是正題,首先我們需要在頁面里放置一個DataGrid。我們用Northwind數(shù)據(jù)庫做例子:

  html頁面的DataGrid如下所示:

<asp:datagrid id="grdTest" runat="server" Height="228px" Width="262px" AutoGenerateColumns="False" AllowPaging="True">
     <Columns>
      <asp:TemplateColumn>
       <ItemTemplate>
<!-- 這里是關鍵-->
        <SPAN>
          <%# Container.ItemIndex+1 %></SPAN>
       </ItemTemplate>
      </asp:TemplateColumn>
      <asp:BoundColumn DataField="CategoryName"></asp:BoundColumn>
      <asp:BoundColumn DataField="Description"></asp:BoundColumn>
     </Columns>
    </asp:datagrid>

  下面我們可以寫他的后臺代碼cs的文件了我們在它的Page_Load里面添加綁定方法如下所示:

private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此處放置用戶代碼以初始化頁面
   strConnection = ConfigurationSettings.AppSettings["sa"].ToString();
   myConnection = new SqlConnection(strConnection);
   SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT CategoryName, Description FROM Categories",myConnection);
// 為了分頁方便ds是一個全局的變量
   myAdapter.Fill(ds);
   this.grdTest.DataSource = ds.Tables[0].DefaultView;
   this.grdTest.DataBind();
}

  從上面的過程可以看出我們使用的是表Categories,這樣我們就可以產生一列自增長的列,此列是從1開始的。如果我們想要一個從0開始的列有該怎么辦呢?我們可以把<!-- 這里是關鍵-->下面的<span>里面的東西換成<asp:Label id=lblRowNumber runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex", "{0}") %>'>就可以了。

  如果我們想要實現(xiàn)分頁也顯示的方法我們將使用DataTable的方法來實現(xiàn),首先我們將DataGrid的列全部變成綁定列(為了方便演示,不是必須)。如下所示:

<asp:table id="tbData" runat="server" BackColor="LightSteelBlue" Height="13px" Width="16px" Font-Names="宋體" Font-Name="宋體" Font-Size="8pt" CellPadding="1" CellSpacing="0" BorderColor="black" BorderWidth="1" Gridlines="Both"></asp:table><br>
    <asp:datagrid id="grdTest" runat="server" Height="228px" Width="262px" AutoGenerateColumns="False" PageSize="2" AllowPaging="True">
     <Columns>
      <asp:BoundColumn DataField="RowNumber" HeaderText="RowNumber"></asp:BoundColumn>
      <asp:BoundColumn DataField="CategoryName"></asp:BoundColumn>
      <asp:BoundColumn DataField="Description"></asp:BoundColumn>
     </Columns>
    </asp:datagrid>

  在后臺我們添加一個函數(shù):

private DataTable GetRowNumberTable(DataTable dt){
   DataColumn col = new DataColumn("RowNumber",Type.GetType("System.Int32"));
   dt.Columns.Add(col);
   for(int i = 0;i<=dt.Rows.Count-1;i++){
    if(0 == i)
     dt.Rows[i][col] = 1;
    else 
     dt.Rows[i][col] = Convert.ToInt32(dt.Rows[i-1][col]) +1;
   }
   return dt;
  }

  然后我們將原來數(shù)據(jù)源改成如下:

this.grdTest.DataSource = this.GetRowNumberTable(ds.Tables[0]).DefaultView;

  這樣一來即使分頁,數(shù)字也是連續(xù)的,并且將編號應用于所有的行而不是當前這一頁的行。

  希望次文對大家有幫助!文中如有錯誤請指正e_mail:wu_jian830@hotmail.com謝謝!


最新更新
·C#中使用Split分隔字符串的技
·VS2008開發(fā)中Windows Mobile
·PC機和移動設備上絕對路徑的
·C#程序加殼的方法(使用Sixx
·當前上下文中不存在名稱Conf
·請插入磁盤:Visual Studio 2
·用VS.NET讀取Flash格式文件信
·在ASP.NET中使用AJAX的簡單方
·VS.NET 2005中常用的一些代碼
·安裝VS.NET 2005 SP1補丁全攻
相關信息
畫心
愚愛
偏愛
火苗
白狐
畫沙
犯錯
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛
棉花糖
海豚音
我相信
甩蔥歌
這叫愛
shero
走天涯
琉璃月
Nobody
我愛他
套馬桿
愛是你我
最后一次
少女時代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂
星月神話
心痛2009
愛丫愛丫
半城煙沙
旗開得勝
郎的誘惑
愛情買賣
2010等你來
我叫小沈陽
i miss you
姑娘我愛你
我們都一樣
其實很寂寞
我愛雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個傳說
丟了幸福的豬
找個人來愛我
要嫁就嫁灰太狼
如果這就是愛情
我們沒有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開之前離開
不是因為寂寞才想你
愛上你等于愛上了錯
在心里從此永遠有個你
一個人的寂寞兩個人的錯
主站蜘蛛池模板: 龙山县| 尉犁县| 女性| 东莞市| 长治县| 汉源县| 财经| 荥阳市| 礼泉县| 平度市| 亚东县| 府谷县| 永胜县| 德兴市| 喀喇| 贺州市| 垣曲县| 教育| 桐柏县| 千阳县| 德清县| 泌阳县| 都江堰市| 漳州市| 池州市| 额尔古纳市| 湖南省| 沁阳市| 安化县| 沁阳市| 镇宁| 隆昌县| 平阴县| 晋宁县| 郎溪县| 炎陵县| 南开区| 兴宁市| 余庆县| 潮安县| 马山县|