关于treeview的autopostback。急!!!在线等待。请高手多多指教。

dick_lai 2002-11-07 06:02:25
现提供一下架构。treeview的结点结构如果只有一层全都是父结点,即:
A
B
C
D
则无论点击ABCD任何一个结点的checkbox都没问题。
但如果结点结构是二层或多层,即
A
+A1
+A2
+A3
B
+B1
+B2
+B3
当我点击树父结点A或B让其展开子树时,屏幕会刷屏使树恢复原状。
我点击父结点A或B的checkbox时,点击的那一刻是成功令checkbox打勾了,但随着刷屏,勾就没有了。
但以上两种情况之前我都加了以下两个语句
tempControl.AutoPostBack = True
tempcontrol.EnableViewState = True
请教各位这是什么回事,如何解决,急,在线等待。谢谢。
...全文
43 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dick_lai 2002-11-08
  • 打赏
  • 举报
回复
什么属性啊?给代码作个例子看看。
dick_lai 2002-11-08
  • 打赏
  • 举报
回复
原来是有如你所说的情况的,但后来我在加结点之前加了这两句
tempControl.AutoPostBack = True
tempcontrol.EnableViewState = True
然后再生成结点,再生成控件的。
问题就解决了,但这两天不知为何,我什么都没改,它却如加了之前一样。搞得我莫名其妙。
killerwc 2002-11-08
  • 打赏
  • 举报
回复
如果没有放进去
每次回送表但都重新加载
是不是会有你那样的效果?
dick_lai 2002-11-08
  • 打赏
  • 举报
回复
我的控件是动态生成 的,如放在if (!(Page.IsPageBack)){}中,还想能再LOAD出来,不行了。
killerwc 2002-11-08
  • 打赏
  • 举报
回复
你是不是把初始化treeview的代码直接放到Page_Load里面
而没有放在
if (!(Page.IsPostBack ))
{

}
里面?
追梦 2002-11-07
  • 打赏
  • 举报
回复
另外添加一个属性来纪录状态。
dick_lai 2002-11-07
  • 打赏
  • 举报
回复
我的程序是用语句动态生成控件的,然后再加入结点
tempControl.AutoPostBack = True
tempcontrol.EnableViewState = True
这两句是放在select case之前的
Case Is = 2 '查指定的表取值,表取于Em_Cd数据库
Dim strGetValue As String
strGetValue = "SELECT " & dsControl.Tables("tQuickControl").Rows(nItemCount).Item(15) & " FROM " & _
dsControl.Tables("tQuickControl").Rows(nItemCount).Item(14) & " WHERE " & _
dsControl.Tables("tQuickControl").Rows(nItemCount).Item(16) & "=" & _
dsControl.Tables("tQuickControl").Rows(nItemCount).Item(17)
daItem = New SqlClient.SqlDataAdapter(strGetValue, cnItem)
daItem.Fill(dsItem, "tControlValueItem" & nItemCount.ToString)
'k作循环之用
Dim k As Integer
'tempNode为树结点
Dim tempNode As Microsoft.Web.UI.WebControls.TreeNode
For k = 0 To dsItem.Tables("tControlValueItem" & nItemCount.ToString).Rows.Count - 1
tempNode = New Microsoft.Web.UI.WebControls.TreeNode()
tempNode.ID = dsItem.Tables("tControlValueItem" & nItemCount.ToString).Rows(k).Item(dsControl.Tables("tQuickcontrol").Rows(nItemCount).Item(19))
tempNode.Text = dsItem.Tables("tControlValueItem" & nItemCount.ToString).Rows(k).Item(dsControl.Tables("tQuickcontrol").Rows(nItemCount).Item(18))
tempNode.CheckBox = True
tempNode.Checked = False
tempControl.Nodes.Add(tempNode)
Next k
Case Is = 3 '只有两层的树,从tArea和相应的Point表取值
Dim strSQL As String
Dim NodeA As Microsoft.Web.UI.WebControls.TreeNode
Dim NodeS As Microsoft.Web.UI.WebControls.TreeNode
Dim m, n As Integer
strSQL = "SELECT * FROM tArea ORDER BY strAreaID"
daItem = New SqlClient.SqlDataAdapter(strsql, cnItem)
daItem.Fill(dsItem, "tArea" & nItemCount.ToString)
For m = 0 To dsItem.Tables("tArea" & nItemCount.ToString).Rows.Count - 1
NodeA = New Microsoft.Web.UI.WebControls.TreeNode()
NodeA.ID = tempcontrol.ID & "$" & dsItem.Tables("tArea" & nItemCount.ToString).Rows(m).Item(0)
NodeA.Text = dsItem.Tables("tArea" & nItemCount.ToString).Rows(m).Item(1)
NodeA.CheckBox = True
NodeA.Checked = False
tempControl.Nodes.Add(NodeA)
strSQL = "SELECT * FROM " & tempPointTable & " WHERE strAreaID='" & dsItem.Tables("tArea" & nItemCount.ToString).Rows(m).Item(0) & "'"
daItem = New SqlClient.SqlDataAdapter(strSQL, cnItem)
daItem.Fill(dsItem, tempPointTable & NodeA.ID.ToString)
For n = 0 To dsItem.Tables(tempPointTable & NodeA.ID.ToString).Rows.Count - 1
NodeS = New Microsoft.Web.UI.WebControls.TreeNode()
NodeS.ID = dsItem.Tables(tempPointTable & NodeA.ID.ToString).Rows(n).Item(1)
NodeS.Text = dsItem.Tables(tempPointTable & NodeA.ID.ToString).Rows(n).Item(2)
NodeS.CheckBox = True
NodeS.Checked = False
NodeA.Nodes.Add(NodeS)
Next
Next
yohomonkey 2002-11-07
  • 打赏
  • 举报
回复
去掉你的autopostback;
或者通过控制tree的状态来指定tree的节点,和是否张开!
hgknight 2002-11-07
  • 打赏
  • 举报
回复
不应该是这样,把你的相关代码都贴出来看看吧

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧