平時用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>
<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;
}