读书人

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

发布时间: 2012-01-11 22:28:46 作者: rapoo

好象没有问题,但就是运总是出以下问题
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);
}

读书人网 >asp.net

热点推荐