gridview绑定问题

qztpro 2008-05-14 12:46:15
我现在从数据库中查询一些数据绑定到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,可是绑定的值并不只一行,有使几页,这是怎么回事?
...全文
216 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
一品梅 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 only_endure 的回复:]
设置这些属性是写在rowdatabound事件里面的。在生成绑定控件时,循环触发gridview_rowDataBound事件,读取每一行
[/Quote]
在该事件里设置visible属性.

我用同样的方法做的,其他的页面的导出都可以,这个页面就只能导出一条


GridView2.AllowPaging = false;//导出前先取消分页,以便能将所有数据导出。
在load页面已经加载了,你还写这条语句有啥意思?
这个至少要写在生存周期中靠前的地方吧
pre_render事件里设置吧。
luojie0811 2008-05-14
  • 打赏
  • 举报
回复
关注中……
一品梅 2008-05-14
  • 打赏
  • 举报
回复
还有,不明白为什么要隐藏列,有这种需求?
qztpro 2008-05-14
  • 打赏
  • 举报
回复
我用同样的方法做的,其他的页面的导出都可以,这个页面就只能导出一条
一品梅 2008-05-14
  • 打赏
  • 举报
回复
设置这些属性是写在rowdatabound事件里面的。在生成绑定控件时,循环触发gridview_rowDataBound事件,读取每一行
qztpro 2008-05-14
  • 打赏
  • 举报
回复
现在我在导出的代码中获取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还是等于,我在循环前就已经取消分页了啊,这是怎么回事呢
gaofenfei 2008-05-14
  • 打赏
  • 举报
回复
DataView view = ds2.DefaultView;

int count = dv.count;

无先生 2008-05-14
  • 打赏
  • 举报
回复
比我的详细
^)^
luckyboy101 2008-05-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lqjlmp 的回复:]
要不设断点你调试一下
看你添加到ds中没有
[/Quote]
一品梅 2008-05-14
  • 打赏
  • 举报
回复
gridView.Rows.Count 只能抓到「該頁」的資料筆數。
int count = result.Tables[0].Rows.Count; (資料總筆數)

而如果是要由 GridView 取得,並且確定資料是由 SqlDataSource 來,請用:

DataView view = GridView.DataSource as DataView;

int count = view.Table.Rows.Count; (資料總筆數)

无先生 2008-05-14
  • 打赏
  • 举报
回复
要不设断点你调试一下
看你添加到ds中没有
jasondct 2008-05-14
  • 打赏
  • 举报
回复
使用这个吧。很方便,就帮定你的gridview 就可以了
PagedDataSource PDS = new PagedDataSource();
它可以让你得到 gridview 每页的项目数,页数,等等属性
qztpro 2008-05-14
  • 打赏
  • 举报
回复
我放在GridView2.DataSource = ds2.Tables[0].DefaultView;
GridView2.DataBind(); 后面
我这样写的:
GridView2.DataSource = ds2.Tables[0].DefaultView;
GridView2.DataBind();
int count = GridView2.Rows.Count;
我绑定写一个方法内,在load中调用的这个方法
无先生 2008-05-14
  • 打赏
  • 举报
回复
你试下ds.rows.count=??
一品梅 2008-05-14
  • 打赏
  • 举报
回复
你在什么事件里写的?
tiancs 2008-05-14
  • 打赏
  • 举报
回复
如果你在绑定完以后取 肯定能取到的 ,但不知道 你放在那里取gridview的行数了

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧