本帖最后由 ziyuxin1988429 于 2011-09-03 17:27:47 编辑

解决方案 »

  1.   

    那是因为你在RowDataBound事件中使用了gridview.rows.count
    那个时候正在将数据源一行一行绑定至控件,所以无法给你返回真实的行数
    你可以在Page级的事件中绑定数据源后使用
      

  2.   


    建议别用gridview,会有一些没用的代码
      

  3.   

    在rowdatabound这个事件中e.row.cells[0].text往往取值为空,但是用dataset绑定的话就不会为空,这个需要怎么解决?
      

  4.   

    Gridview 绑定list gridview要自己绑定列
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
        <Columns>
        <asp:TemplateField HeaderText="学号">
        <ItemTemplate >
        <%# ((visitor)Container.DataItem).Vid %>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="姓名">
        <ItemTemplate>
        <%# ((visitor)Container.DataItem).Vname %>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="地址">
        <ItemTemplate>
        <%# ((visitor)Container.DataItem).Vadd %>
        </ItemTemplate>
        </asp:TemplateField>
        </Columns>
        </asp:GridView>后台代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    using System.Collections;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.GridView1.DataSource = bind();
                this.GridView1.DataBind();
            }
        }
        
        public List<visitor> bind()
        {
            List<visitor> lt = new List<visitor>();
           
            SqlConnection cn = new SqlConnection("server=.;database=pubs;uid=sa;pwd=sa");
            cn.Open();
            SqlCommand cmd = new SqlCommand("select stuid,stuname,stuadd from sj",cn);
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {   visitor vs = new visitor();
               vs.Vid= dr[0].ToString();
               vs.Vname = dr[1].ToString();
               vs.Vadd = dr[2].ToString();
               lt.Add(vs);
            }
           
            dr.Close();
            return lt;
        }
    }
    public class visitor
    {
       public string Vname;
       public string Vid;
       public string Vadd;
    }
      

  5.   

    虽然是高手 但是貌似答非所问  虽然我是新手 但这个简单的绑定方式 我还是会得  只是在绑定的时候  在rowdatabound事件中读不出来row。cell【】。text的值