public class result : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Data.SqlClient.SqlConnection con=new SqlConnection("server=CHINA-03337A29D;uid=sa;pwd=;database=Northwind");
DataSet ds=new DataSet(); private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
BindGrid();
}
private void BindGrid()
{
string str3=Session["str2"].ToString();
SqlDataAdapter adp=new SqlDataAdapter(str3,con);
adp.Fill(ds,"TV");
DataGrid1.DataSource=ds.Tables[0].DefaultView;
DataGrid1.DataBind();
}
public void DGrid_TitleSumList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
int TotalSBWTV=0;
int i;
for(i = 0;i < ds.Tables["TV"].Rows.Count;i++)
{
TotalSBWTV+=int.Parse(ds.Tables["TV"].Rows[i][1].ToString());
}
if (e.Item.ItemType== ListItemType.Footer)
{
e.Item.Cells[0].Text = "总计";
e.Item.Cells[1].Text =TotalSBWTV.ToString();
}
} 最终在页面应该显示的是
地区 数量
北京 4
上海 7
杭州 5
总计 16
最后可以算出总数是16,但是我在TotalSBWTV+=int.Parse(ds.Tables["TV"].Rows[i][1].ToString());
这行做了一个断点,按F5并看局部变量i=0时TotalSBWTV=0,i=1时TotalSBWTV=4,i=2时TotalSBWTV=11,之后i=0时TotalSBWTV=0,i=1时TotalSBWTV=4,i=2时TotalSBWTV=11一直这么循环5次,之后跳转到页面显示列表.
1.我不知道为什么他要循环5次,并且从来没显示过TotalSBWTV=16.而且i=0时TotalSBTV应该等于4啊,为什么他是0.
2.比如上面的表是一个table表,显示"地区""数量"的行是0行还是1行,同样"数量"列是否是1列?
3.我看很多帖子有if(e.Item.ItemType==ListItemType.Iteme.Item.ItemType==ListItemType.AlternatingItem) {}
这句话的意义是什么?我开始for循环是写在这个if语句里头的.但是最后显示结果就是TotalSBWTV=0.最后我把这个if语句去掉了.反而能算出来了总计是16.很糊涂...
4.用ItemDataBound是不是就是要在aspx里<asp:DataGrid id="DataGrid1"
OnItemDataBound="DGrid_TitleSumList_ItemDataBound" >添上OnItemDataBound="DGrid_TitleSumList_ItemDataBound"我比较初学,望一一解答,谢谢!
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Data.SqlClient.SqlConnection con=new SqlConnection("server=CHINA-03337A29D;uid=sa;pwd=;database=Northwind");
DataSet ds=new DataSet(); private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
BindGrid();
}
private void BindGrid()
{
string str3=Session["str2"].ToString();
SqlDataAdapter adp=new SqlDataAdapter(str3,con);
adp.Fill(ds,"TV");
DataGrid1.DataSource=ds.Tables[0].DefaultView;
DataGrid1.DataBind();
}
public void DGrid_TitleSumList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
int TotalSBWTV=0;
int i;
for(i = 0;i < ds.Tables["TV"].Rows.Count;i++)
{
TotalSBWTV+=int.Parse(ds.Tables["TV"].Rows[i][1].ToString());
}
if (e.Item.ItemType== ListItemType.Footer)
{
e.Item.Cells[0].Text = "总计";
e.Item.Cells[1].Text =TotalSBWTV.ToString();
}
} 最终在页面应该显示的是
地区 数量
北京 4
上海 7
杭州 5
总计 16
最后可以算出总数是16,但是我在TotalSBWTV+=int.Parse(ds.Tables["TV"].Rows[i][1].ToString());
这行做了一个断点,按F5并看局部变量i=0时TotalSBWTV=0,i=1时TotalSBWTV=4,i=2时TotalSBWTV=11,之后i=0时TotalSBWTV=0,i=1时TotalSBWTV=4,i=2时TotalSBWTV=11一直这么循环5次,之后跳转到页面显示列表.
1.我不知道为什么他要循环5次,并且从来没显示过TotalSBWTV=16.而且i=0时TotalSBTV应该等于4啊,为什么他是0.
2.比如上面的表是一个table表,显示"地区""数量"的行是0行还是1行,同样"数量"列是否是1列?
3.我看很多帖子有if(e.Item.ItemType==ListItemType.Iteme.Item.ItemType==ListItemType.AlternatingItem) {}
这句话的意义是什么?我开始for循环是写在这个if语句里头的.但是最后显示结果就是TotalSBWTV=0.最后我把这个if语句去掉了.反而能算出来了总计是16.很糊涂...
4.用ItemDataBound是不是就是要在aspx里<asp:DataGrid id="DataGrid1"
OnItemDataBound="DGrid_TitleSumList_ItemDataBound" >添上OnItemDataBound="DGrid_TitleSumList_ItemDataBound"我比较初学,望一一解答,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货