日期:2014-05-19  浏览次数:20432 次

如何设置 GridView 列宽
关于这个问题,我搜索了一下,在微软网站上发现这篇文章
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