关于这个问题,我搜索了一下,在微软网站上发现这篇文章
http://msdn2.microsoft.com/zh-cn/library/ms178296(VS.80).aspx#Mtps_DropDownFilterText
protected int widestData;
protected void GridView1_RowDataBound(object sender,
GridViewRowEventArgs e)
{
System.Data.DataRowView drv;
drv = (System.Data.DataRowView)e.Row.DataItem;
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (drv != null)
{
String catName = drv[1].ToString();
Response.Write(catName + "/ ");
int catNameLen = catName.Length;
if (catNameLen > widestData)
{
widestData = catNameLen;
GridView1.Columns[2].ItemStyle.Width = widestData * 30;
GridView1.Columns[2].ItemStyle.Wrap = false;
}
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
widestData = 0;
}
我照着它,把代码copy下来,运行出现问题
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
源错误:
行 88: {
行 89: widestData = catNameLen;
行 90: GridView1.Columns[2].ItemStyle.Width = widestData * 30;
行 91: GridView1.Columns[2].ItemStyle.Wrap = false;
行 92: }
源文件: d:\asp\WebSite4\patient\serious_patient.aspx.cs 行: 90
我把widestData * 30 改成 80,还是同样的问题,这是怎么回事呢?
------解决方案--------------------------------------------------------