GridView各個事件中,怎樣獲取主鍵值

      平時用GridView做信息列表後臺的時候,前面通常都加一個序號列。此時就不能用數據庫裏的ID號了,因爲數據庫的刪除插入操作,導致那些號碼並不連貫,給人的感覺不是很好,所以這裏通常讓他自動編號。

首先我們爲 Gridview 增加一個新的空白列,如下:
<asp:BoundField  HeaderText="序號">
            <ItemStyle HorizontalAlign="Center" Width="26px" />
            </asp:BoundField>

在 GridView RowDataBound 事件中編寫代碼,如下:
 protected void RowDataBond1(object sender, GridViewRowEventArgs e)
{
         if (e.Row.RowIndex > -1)
        {
         
         e.Row.Cells[0].Text = Convert.ToString(e.Row.RowIndex + 1);
        }
          
  }

 

PS:還有種常用的方法是利用asp:TemplateField 自定義一列:
<asp:TemplateField HeaderText="序號">           
                <ItemTemplate>             
               &nbsp; <asp:Label ID="lab_index" runat="server" Text="<%#Container.DataItemIndex+1%>"></asp:Label>
                </ItemTemplate>
                    <ItemStyle Width="40px" />
                </asp:TemplateField>

       這樣就會有一個自動編號的列出來了,那麼我們要對某一列進行操作的時候就不能用cells[0].text的方法了,那樣得到的ID號和數據庫裏的並不對應,所以我們要用主鍵的方法,我們首先在GridView的屬性中的DataKeyNames裏面寫上我的的表主鍵,然後在到方法裏用語句把這個值取出來,我們就知道用戶是要對哪一列進行操作了,下面寫出了幾個在事件中取出主鍵值的方法,以供參考。

我們最常用的,當然就是RowDataBound方法了

在 GridView1_RowDataBound中獲取主鍵的值
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    int index = GridView1.DataKeys[e.Row.RowIndex].Value;
}

其次就是刪除事件

在 GridView1_RowDeleting中獲取主鍵的值
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
 {
    int
index
=GridView1.DataKeys[e.RowIndex].Value;
 }

分頁事件

在 GridView1_PageIndexChanging中獲取主鍵的值

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
 {
    int index=GridView1.DataKeys[e.NewPageIndex].Value;
 }

還有其它幾個不常用的:

在 GridView1_RowCommand中獲取主鍵的值:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
 {
       int index = GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value;
 }

 

在 GridView1_RowEditing中獲取主鍵的值
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
 {
     int index = GridView1.DataKeys[e.NewEditIndex].Value;
 }

在 GridView1_RowUpdating中獲取主鍵的值

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
     int index = GridView1.DataKeys[e.RowIndex].Value;
 }

發佈了13 篇原創文章 · 獲贊 9 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章