我使用asp:SqlDataSource控件,从数据库Select某个表的全部记录绑定到GridView控件上,但是还想在GridView的第一列显示行号,1,2,3,4……
<asp:SqlDataSource ID="sqlRegister" runat="server" ConnectionString="<%$ ConnectionStrings:websiteDBConnectionString %>"
     SelectCommand = "Select ID, Name, Sex, ApplyJob, AddTime From WS_Register ">
</asp:SqlDataSource><asp:GridView ID=gv runat=server>
    <asp:BoundColumn DataField=SeqID Visible=true></asp:BoundColumn>
    ……
</asp:GridView>我开始想通过在GridView的RowDataBound事件中给SeqID列赋值,如下所示:
    protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {    
        //如果是数据项并且是交替项
        if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.EmptyDataRow)
        {
            //给SeqID字段绑定值
            int seqID = gv.PageSize * gv.PageIndex + gv.Rows.Count + 1;
            e.Row.Cells[0].Text = seqID.ToString();
         }
     }    但是运行到数据绑定时出错,提示为:“未在指定的数据源中找到SeqID”,这是不是意味着,我必须在SqlDataSource的SelectCommand中增加SeqID字段啊,Sql语句应该怎么写呢?
    如果不需要这样做,那又怎样为这个模板列赋值?
    请各位高手指教!

解决方案 »

  1.   

    在第一列加个Label,ID是Label1
    在ItemDataBound事件里写
    int count =GetUpLoadFile.CurrentPageIndex;
    int size = GetUpLoadFile.PageSize * count;
    int result = size + e.Item.ItemIndex+1;
    System.Web.UI.WebControls.Label lab = (System.Web.UI.WebControls.Label)e.Item.Cells[0].FindControl("Label1");
    if(lab!=null)
    {
    lab.Text= result.ToString();
    }
      

  2.   

    //****声明一个变量
    private int intRow=0;//****构造一个自增变量函数
    public int AutoRowNumber()
    {
      return intRow++;
    }
    //*****前台邦定,datagive模版列中邦定即可//****例如:
     <asp:GridView ID=GView runat=server AutoGenerateColumns="False" OnRowCommand="GView_RowCommand" OnRowEditing="GView_RowEditing" OnRowCancelingEdit="GView_RowCancelingEdit" OnRowDataBound="GView_RowDataBound" AllowPaging="True" AllowSorting="True"  OnPageIndexChanging="GView_PageIndexChanging" PageSize="2">
             <Columns>
                  <asp:TemplateField>
                  <ItemTemplate>
                   <%=AutoRowNumber()%>
                   </ItemTemplate>
                </asp:TemplateField>
            </columns>
    <asp:datagive/>