首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

给GridView添加编号列,如何实现啊

2012-03-14 
给GridView添加编号列,怎么实现啊?ItemTemplateasp:Label runatserver IDid Text%# this.Grid

给GridView添加编号列,怎么实现啊?
<ItemTemplate><asp:Label runat="server" ID="id" Text="<%# this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1 %>"></asp:Label></ItemTemplate>

不理解为什么是this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1
this.GridView1.Rows.Count返回值是什么啊?为什么要用this.GridView1.Rows.Count

[解决办法]
用这么复杂么?用SQL文加一列绑定还方便
SELECT Row_Number() over(order by ID) as abcd
FROM TABLE
[解决办法]
实现方法:
双击GridView的OnRowDataBound事件;
在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//如果是绑定数据行 //清清月儿http://blog.csdn.net/21aspnet 
if (e.Row.RowType == DataControlRowType.DataRow)
{
////鼠标经过时,行背景色变 
//e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
////鼠标移出时,行背景色变 
//e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");

////当有编辑列时,避免出错,要加的RowState判断 
//if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
//{
// ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
//}

}
if (e.Row.RowIndex != -1)
{
int id = e.Row.RowIndex + 1;
e.Row.Cells[0].Text = id.ToString();
}

}

 

注意这时最好把前台的第一列的表头该为“编号”,因为以前的第一列被“吃掉”了。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" OnRowDataBound="GridView1_RowDataBound">
<FooterStyle BackColor="White" ForeColor="#000066" />
<Columns>
<asp:BoundField DataField="身份证号码" HeaderText="编号" ReadOnly="True" />
<asp:BoundField DataField="姓名" HeaderText="用户姓名" />
<asp:BoundField DataField="员工性别" HeaderText="性别" />
<asp:BoundField DataField="家庭住址" HeaderText="家庭住址" />
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
<asp:CommandField HeaderText="编辑" ShowEditButton="True" />
<asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
</Columns>
<RowStyle ForeColor="#000066" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />


</asp:GridView>

[解决办法]
晕,不用那么复杂吧,是不是加序号的意思呀
在你的Gridview <Columns>列下面 追加这个,试试


 <asp:TemplateField HeaderText="序号">
<itemtemplate>
<%# Container.DataItemIndex+1%>
</itemtemplate>
</asp:TemplateField>
[解决办法]
up
[解决办法]
不理解为什么是this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1 
this.GridView1.Rows.Count返回值是什么啊?为什么要用this.GridView1.Rows.Count

this.GridView1.Rows.Count返回行数。
这this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1
应该是在算结果数目。
this.GridView1.PageIndex页面索引。
this.GridView1.PageSize页面尺寸。
this.GridView1.Rows.Count + 1该页显示的数目。
[解决办法]
this.GridView1.PageIndex 当前页数,首页为0
this.GridView1.PageSize 每页大小
this.GridView1.Rows.Count 当前行数,首行为0

this.GridView1.PageIndex * this.GridView1.PageSize + this.GridView1.Rows.Count + 1 计算出当前行号
[解决办法]
忘说了
this.GridView1.Rows.Count 这是在DataRowBound的时候计算的,所以不是所有数据行总数
[解决办法]
更正:
this.GridView1.PageIndex 当前页数,首页为0 --->应该是当前页码,首页为0
this.GridView1.Rows.Count 当前行数,首行为0 --->应该是当前行号,首行为0
[解决办法]
也就是说到当前为止的总数?
[解决办法]
恩..
让14楼的同志见笑了,我也是在学习,大家互相帮助:)
[解决办法]
如果数据源实强类型的可以直接在数据源上加
[解决办法]
如果是若类型可以在绑定gridview时加

[解决办法]
不多说了,一些Gridview源码例子

http://www.51aspx.com/S/gridview.aspx

热点排行