我现在从数据库中查询一些数据绑定到gridview中,具体代码如下
public void BindZhishiku()
    {
        DataSet ds2 = new DataSet();
        DataTable dt = new DataTable();
        dt.TableName = "zhishiku";
        dt.Columns.Add("gzxxname");
        dt.Columns.Add("wxjiejueshuomin");
        ds2.Tables.Add(dt);
        DataRow dr;
        DataSet ds = new DataSet();
        ds = gz.GetAllgzxxname();
        string str = "";
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            DataSet ds1 = new DataSet();
            gugxx.Gzxxname = ds.Tables[0].Rows[i]["gzxxname"].ToString();
            ds1 = gz.GetZhishikuByGzxxname(gugxx);
            for (int j = 0; j < ds1.Tables[0].Rows.Count; j++)
            {
                string shuoming = ds1.Tables[0].Rows[j]["wxjiejueshuomin"].ToString();
                //str =  ";" + str;
                str = str + shuoming + ";";
                j++;
            }
            dr = ds2.Tables[0].NewRow();
            dr["gzxxname"] = gugxx.Gzxxname;
            dr["wxjiejueshuomin"] = str;
            ds2.Tables[0].Rows.Add(dr);
        }
        GridView2.DataSource = ds2.Tables[0].DefaultView;
        GridView2.DataBind();
    }
在load事件中调用的,我现在想得到gridview的行数,我这样写的,int count = GridView2.Rows.Count; 为什么得到的值是1,可是绑定的值并不只一行,有使几页,这是怎么回事?

解决方案 »

  1.   

    如果你在绑定完以后取 肯定能取到的 ,但不知道 你放在那里取gridview的行数了
      

  2.   

    我放在GridView2.DataSource = ds2.Tables[0].DefaultView; 
            GridView2.DataBind(); 后面
    我这样写的:
    GridView2.DataSource = ds2.Tables[0].DefaultView;
            GridView2.DataBind();
            int count = GridView2.Rows.Count;
    我绑定写一个方法内,在load中调用的这个方法
      

  3.   

     使用这个吧。很方便,就帮定你的gridview 就可以了
    PagedDataSource PDS = new PagedDataSource();
    它可以让你得到 gridview  每页的项目数,页数,等等属性
      

  4.   

    gridView.Rows.Count 只能抓到「該頁」的資料筆數。
    int count = result.Tables[0].Rows.Count; (資料總筆數)而如果是要由 GridView 取得,並且確定資料是由 SqlDataSource 來,請用:DataView view = GridView.DataSource as DataView;int count = view.Table.Rows.Count; (資料總筆數)
      

  5.   

    DataView view = ds2.DefaultView;int count = dv.count;
      

  6.   

    请参考:http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=270629&SiteID=14
      

  7.   

    现在我在导出的代码中获取gridview的行数也是1,导出按钮的单击事件中是这样写的:
    Response.Clear();        Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
            Response.Charset = "UTF-8";
            Response.ContentType = "application/ms-excel";
            Response.ContentEncoding = System.Text.Encoding.UTF7;        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);        GridView2.AllowPaging = false;//导出前先取消分页,以便能将所有数据导出。        GridView2.DataBind();//再重新绑定一次数据
            int m = GridView2.Columns.Count;
            for (int i = 0; i < GridView2.Rows.Count; i++)
            {
                GridView2.Rows[i].Cells[m - 1].Visible = false;
                GridView2.Rows[i].Cells[m - 1].Enabled = false;        }        GridView2.RenderControl(htmlWrite);
            Response.Write(stringWrite.ToString());
            Response.End();        GridView2.AllowPaging = true;//导出后先取消分页,以便能将所有数据导出。
            GridView2.DataBind();//再重新绑定一次数据
    在循环的时候得到的GridView2.Rows.Count还是等于,我在循环前就已经取消分页了啊,这是怎么回事呢
      

  8.   

    设置这些属性是写在rowdatabound事件里面的。在生成绑定控件时,循环触发gridview_rowDataBound事件,读取每一行
      

  9.   

    在该事件里设置visible属性.我用同样的方法做的,其他的页面的导出都可以,这个页面就只能导出一条
    GridView2.AllowPaging = false;//导出前先取消分页,以便能将所有数据导出。 
    在load页面已经加载了,你还写这条语句有啥意思?
    这个至少要写在生存周期中靠前的地方吧
    pre_render事件里设置吧。