日期:2014-05-17  浏览次数:20490 次

gridview中用数字编号的问题
想利用gridview最终实现如:
第一个记录:1.题目
  ...
第二个记录:2.题目
  ...
第三个记录:3.题目
  ...
就是实现数字递增编号
我这样做的:
 protected void showxzgw1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
  Label xhlbl = (Label)e.Row.FindControl("xuhaolbl");
  for (int i = 1; i < showxzgw1.Rows.Count; i++)
  {
  xhlbl.Text = Convert.ToString(i);
  }
  }
  }

  <asp:GridView ID="showxzgw1" runat="server" AutoGenerateColumns="False" 
  GridLines="None" onrowdatabound="showxzgw1_RowDataBound" >
  <Columns>
  <asp:TemplateField HeaderText="选择题">
  <ItemTemplate>
   
  <asp:Label ID="xzidlbl" runat="server" Text='<%# Eval("id") %>' Visible="false"></asp:Label>
  <asp:Label ID="xuhaolbl" runat="server" Text="Label"></asp:Label>
  <asp:Label ID="Label1" runat="server" Text='<%# Eval("timu") %>'></asp:Label>
  ...

  结果 我有四条记录,前两个记录没有被编号,显示label,从第三个开始编号的,怎么回事呢?

------解决方案--------------------
你那个循环有问题,循环对同一label赋值毫无意义。

很久没用过GridView,但我记得似乎有一个类似于序号的属性可以直接在前台绑定时使用。
好象叫DataItem.ItemIndex之类的。你可以查查
------解决方案--------------------
用e.Row.RowIndex+1,不要用for循环。你可以简单的试下:

xhlbl.Text=(e.Row.RowIndex+1).ToString();