昨天做的treeview就是触发不了SelectedNodeChanged事件。
treeview有两种模式:一个是导航模式,一个是选择模式
区别就是有没有url那个属性
如果这个属性是空的,就能重复激发那个事件了,否则只触发一次
myNode.Text = myDataTable.Rows[j][0].ToString();
myNode.Value = myDataTable.Rows[j][0].ToString();
myNode.NavigateUrl = "~/WebFiles/advises.aspx?adiTitle=" + myNode.Text;
//myNode.Value = "~/WebFiles/advises.aspx";
myNode.Target = "main";
this.indexnav.Nodes[i].ChildNodes.Add(myNode);
但是出现了一个问题:如果数据库中有一条数据,正确加载,如果出现多条,最后一行报错:下标越界
设了断点,就是发现不了错误在哪,后来将TreeNode myNode = new TreeNode();
房在循环体内部就正确了。
for (int i = 0; i < this.indexnav.Nodes.Count; i ++)
{
if (this.indexnav.Nodes[i].Text == "行政审批")
{
DataTable myDataTable;
int rowNum;
string mySql = "select apm_moduleName from appcModule";
myDataTable = myDatabase.selectData(mySql);
rowNum = myDataTable.Rows.Count;
if (rowNum != 0)
{
for (int j = 0; j < rowNum; j++)
{
TreeNode myNode = new TreeNode();
myNode.Text = myDataTable.Rows[j][0].ToString();
myNode.Value = myDataTable.Rows[j][0].ToString();
myNode.NavigateUrl = "~/WebFiles/advises.aspx?adiTitle=" + myNode.Text;
//myNode.Value = "~/WebFiles/advises.aspx";
myNode.Target = "main";
this.indexnav.Nodes[i].ChildNodes .Add(myNode);
//myNode = null;
}
}
break;
}
}