首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

好象没有有关问题,但就是运总是出以下有关问题

2012-01-11 
好象没有问题,但就是运总是出以下问题publicvoidbindTreeView(){stringstrNFstringstrNF1 stringstrG

好象没有问题,但就是运总是出以下问题
public   void   bindTreeView(   )
        {
                string   strNF;
                string   strNF1   =   " ";
                string   strGroup;
                string   strYear;
                bool   isExpand   =   false;
                TreeNode   pNode   =   new   TreeNode();
                TreeNode   cNode   =   new   TreeNode();

                strYear   =   DateTime.Now.ToString( "yyyy ");
                DataTable   dt   =   getCateorys().Tables[0];
                tvMain.Nodes.Clear();
                foreach   (DataRow   row   in   dt.Rows)
                {
                        strNF   =   row[ "nf "].ToString();
                        strGroup   =   row[ "groupby "].ToString();
                        if   (strNF   ==   strNF1)
                        {
                                cNode.Text   =   strGroup;
                                cNode.Value   =   strGroup;
                                pNode.ChildNodes.Add(cNode);
                                strNF1   =   strNF;
                        }
                        else
                        {  
                                pNode.Text   =   strNF;
                                pNode.Value   =   strNF;
                                if   (strNF   ==   strYear)
                                {
                                        isExpand   =   true;
                                }
                                pNode.Selected   =   isExpand;


                                pNode.Expanded   =   isExpand;
                                tvMain.Nodes.Add(pNode);
                            }                        
                }
运行后出现如下问题:
在最后一行:tvMain.Nodes.Add(pNode);
提示:用户代码示处理:ArgumentOutOfRangeException
            索引必须位于该列表的界限内。
            参数名:   index

[解决办法]
每次用到pNode的时候,都New一下.
把TreeNode pNode = new TreeNode();
改为TreeNode pNode;

在pNode.Text = strNF;前面加上一行
pNode=new TreeNode();

试试.
[解决办法]
改成
foreach (DataRow row in dt.Rows)
{
strNF = row[ "nf "].ToString();
strGroup = row[ "groupby "].ToString();
if (strNF == strNF1)
{
cNode = new TreeNode();
cNode.Text = strGroup;
cNode.Value = strGroup;
pNode.ChildNodes.Add(cNode);
strNF1 = strNF;
}
else
{
pNode = new TreeNode();
pNode.Text = strNF;
pNode.Value = strNF;
if (strNF == strYear)
{
isExpand = true;
}
pNode.Selected = isExpand;
pNode.Expanded = isExpand;
tvMain.Nodes.Add(pNode);
}

热点排行