杀了我吧!怎么可能不对?救我啊!
我做的树执行3次Treeview1_Collapse后就在下面多出内容,如下:
-提示
1121
ww
-sd
dlf
-1111
俄谔谔
执行第一次
Treeview1_Collapse
-提示
1121
ww
-sd
dlf
+1111
执行第二次
Treeview1_Collapse
-提示
1121
ww
+sd
+1111
执行第三次
Treeview1_Collapse
+提示
+sd
+1111
-提示
1121
ww
+sd
+1111
其中TreeView1.EnableViewState=false;
相关代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostBack)
{
readList();
ListBox1.Items[0].Selected=true;
reintiTree(Treeview1.Nodes,-1);
ViewState["ss"]="";
}
if(!IsPostBack)
{
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("id",typeof(string));
dt.Columns.Add(new DataColumn("id",typeof(string)));
dc=new DataColumn("IsExpanded",typeof(bool));
dt.Columns.Add(dc);
dc=new DataColumn("IsSelected",typeof(bool));
dt.Columns.Add(dc);
saveAllNodeState(Treeview1.Nodes,dt);
}
}
private void reintiTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds , int parentId)
{
string getid=ListBox1.SelectedItem.Value;
int tt;
tt=this.readHasnum();
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["sqlConnectString"]);
string myChooseQuery;
myChooseQuery = "SELECT * FROM GZB_CODE2 where VALID=1 and GCO1_ID="+getid;
SqlDataAdapter myCommand = new SqlDataAdapter(myChooseQuery,myConnection);
DataSet dsds=new DataSet();
myCommand.Fill(dsds,"table0");
DataView dv=new DataView() ;
Microsoft.Web.UI.WebControls.TreeNode tmpNd;
int strId;
dv.Table = dsds.Tables["table0"];
if(parentId==-1)
dv.RowFilter="IsNull(GCO2_ID,-1) = -1";
else
dv.RowFilter = "GCO2_ID='" + parentId+ "'";
foreach(DataRowView objRow in dv)
{
tmpNd=new Microsoft.Web.UI.WebControls.TreeNode();
strId=(int)objRow["ID"];
if(tt==0)
{
tmpNd.Text=objRow["DESCRIBE"].ToString();
tmpNd.ID=objRow["ID"].ToString();
}
if(tt==1)
{
string st=objRow["STD_CODE"].ToString()+objRow["DESCRIBE"].ToString();
tmpNd.Text=st.ToString();
tmpNd.ID=objRow["ID"].ToString();
}
Nds.Add(tmpNd);
reintiTree(Nds[Nds.Count-1].Nodes,strId);
}
}
private void TextBox1_TextChanged(object sender, System.EventArgs e)
{
}
private void Treeview1_Expand(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)
{
reintiTree(Treeview1.Nodes,-1);
DataTable dt1=new DataTable();
dt1=(System.Data.DataTable)ViewState["s"];
backAllNodeState(Treeview1.Nodes,dt1,2);
Treeview1.SelectedNodeIndex=e.Node;
Treeview1.GetNodeFromIndex(e.Node).Expanded=true;
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("id",typeof(string));
dt.Columns.Add(dc);
dc=new DataColumn("IsExpanded",typeof(bool));
dt.Columns.Add(dc);
dc=new DataColumn("IsSelected",typeof(bool));
dt.Columns.Add(dc);
saveAllNodeState(Treeview1.Nodes,dt);
ViewState["ss"]=Treeview1.GetNodeFromIndex(Treeview1.SelectedNodeIndex).ID.ToString();
}
private void Treeview1_Collapse(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)
{
reintiTree(Treeview1.Nodes,-1);
DataTable dt1=new DataTable();
dt1=(System.Data.DataTable)ViewState["s"];
backAllNodeState(Treeview1.Nodes,dt1,2);
Treeview1.SelectedNodeIndex=e.Node;
Treeview1.GetNodeFromIndex(e.Node).Expanded=false;
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("id",typeof(string));
dt.Columns.Add(dc);
dc=new DataColumn("IsExpanded",typeof(bool));
dt.Columns.Add(dc);
dc=new DataColumn("IsSelected",typeof(bool));
dt.Columns.Add(dc);
saveAllNodeState(Treeview1.Nodes,dt);
ViewState["ss"]=Treeview1.GetNodeFromIndex(Treeview1.SelectedNodeIndex).ID.ToString();
bool rr=Treeview1.EnableViewState;
}