我在DataGrid()里有:
DataTable tb = Class.DataBindToDS(Sqlstr2);
tb.Columns.Add(new DataColumn("回访总数",typeof(string)));
dataGrid.DataSource = tb;
dataGrid.DataBind();
然后有 private void dataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
int yewuCount=0;
for(int i=3;i <dataGrid.Columns.Count-5;i++)
{
yewuCount+=Convert.ToInt32(e.Item.Cells[i].Text);
}
e.Item.Cells[dataGrid.Columns.Count-5].Text=yewuCount.ToString();
}
}但报错:指定的参数已超出有效值的范围。参数名: index
我在跟踪后发现dataGrid.Columns.Count的值竟是0。请问各位该怎么改?
DataTable tb = Class.DataBindToDS(Sqlstr2);
tb.Columns.Add(new DataColumn("回访总数",typeof(string)));
dataGrid.DataSource = tb;
dataGrid.DataBind();
然后有 private void dataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
int yewuCount=0;
for(int i=3;i <dataGrid.Columns.Count-5;i++)
{
yewuCount+=Convert.ToInt32(e.Item.Cells[i].Text);
}
e.Item.Cells[dataGrid.Columns.Count-5].Text=yewuCount.ToString();
}
}但报错:指定的参数已超出有效值的范围。参数名: index
我在跟踪后发现dataGrid.Columns.Count的值竟是0。请问各位该怎么改?
解决方案 »
- this.UniqueID
- 【急切求助】开发工具不能选中和拷贝代码,注释代码也不显示彩色!!
- 软件开发中经常遇到哪些问题或风险因素会给开发的软件质量、性能、功能等方面带来威胁?
- 关于时间段的控制
- 静态类
- 我编的textbox为什么不能识别中文啊?郁闷~~
- 服务器权限配置问题!急~~~~~~~~~~~
- 关于在一个解决方案中的多个应用程序间传递数据、对象等使用远程服务与web service哪种好呢?各自的优点是什么呢?
- 心情比较不错,接着散分....
- 蔡鸟提问,我的datagrid 中的OnItemCommand为什么触发不了?
- 如何用控制页面元素的属性
- 用datalist 或repeater 如何实现这样的"父" "子"关系的列表
if(dataGrid.Columns.Count>=5)
{
int yewuCount=0;
...
}
因为我把dataGrid_ItemDataBound()事件注销后
就可以显示出表格和里面的数据啊加判断条件显然是没用的,因为dataGrid.Columns.Count调试的时候值是 0
{
if(e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
int yewuCount=0;
for(int i=3;i <dataGrid.Columns.Count-5;i++)
{
yewuCount+=Convert.ToInt32(e.Item.Cells[i].Text);
e.Item.Cells[i-3].Text=yewuCount.ToString(); }
}
}
我调试了下,发现调试到dataGrid.DataSource = tb;时我看tb.cloums.count的值时就报错了。而如果没有
tb.Columns.Add(new DataColumn("回访总数",typeof(string)));这句就显示tb.cloums.count=9。
而当我把ItemDataBound中的代码放在dataGrid_ItemCommand中执行的时候,到上面那步显示tb.cloums.count=10
了,就是说不报错了,但是却不执行ItemCommand中的代码,就是说运行出来我要求的那一列虽然有,但里面的值全为空。
还请高手继续指点
if(e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
int yewuCount=0;
for(int i=3;i <e.Item.Cells.Count-5;i++)
{
yewuCount+=Convert.ToInt32(e.Item.Cells[i].Text);
}
e.Item.Cells[e.Item.Cells.Count-5].Text=yewuCount.ToString();
}
int yewuValue=0;
Int32.TryParse(Item.Cells[i].Text,out yewuValue);
yewuCount+=yewuValue;
就不会报错了
for(int i=3;i <e.Item.Cells.Count-5;i++)
{
int yewuValue=0;
Int32.TryParse(Item.Cells[i].Text,out yewuValue);
yewuCount+=yewuValue; (e.Item.Cells[i].Text);
}
要这么写的。
try
{
yewuValue=int32.parse(e.Item.Cells[i].Text);
}
catch
{
yewuValue=0;
}
yewuCount+=yewuValue;
用这个试试吧。
你可以根据实际情况判断吧。