思归大侠请进:还是保持ViewState的问题
上个贴子
http://expert.csdn.net/Expert/topic/2337/2337880.xml?temp=.9877436
按照你说的已经解决,只是还有两个问题,请帮忙
1我在Panel1.controls.clear后,加了一个包含DataGrid的UserControl,假如我选择其中的一行,也激发SelectedIndexChanged事件,但该行就是无法选择,只是在第二次以后才可以
2我加的这个DataGrid的Datasource为一个DataTable,使用SqlDataAdapter.Fill(DataTable)方法填充的没有问题,视图状态可以保存,可有时我的数据源来自一个XMLDocument,它的格式是这样的:
<?xml version="1.0" encoding="gb2312" ?>
- <SMSvrXML TYPE="OBJSEARCH">
<SMWS>HeatMapLocal</SMWS>
<APP>DEMO</APP>
<MAP>管线编辑</MAP>
<ERROR />
<INFO />
<REC SMID="177" SMSDRIW="495036" SMSDRIN="302768" SMSDRIE="507274" SMSDRIS="302509" SMCHECKEDUSERID="0" SMEDITSTATE="0" SMGRANULE="12315.0911792194" SMUSERID="177" SMLENGTH="13320.7371138765" SMTOPOERROR="0" 管线名称="长安线" 管线长度="0" 管线代号="0" 起点="(0)" 终点="(0)" 父管线="176" 所别="0" 管别="0" 名别="0" 类别="0" 敷设方式="0" 保温类型="0" 管径="" 壁厚="" TOPLEFTX="498182.689884098" TOPLEFTY="304692.75687987" BOTTOMRIGHTX="510497.781063317" BOTTOMRIGHTY="304692.75687987" CENTERX="504340.235473707" CENTERY="304562.057216888" WIDTH="12315.0911792194" HEIGHT="261.399325964332" LAYER="管线@HeatMaps" />
<USERID>9.75689374.7336337912.0452777778</USERID>
<IP>127.0.0.1</IP>
<PORT>8010</PORT>
<LAYER>管线@HeatMaps</LAYER>
<STARTRECNO>2</STARTRECNO>
<FINDMAX>10</FINDMAX>
<STARTLAYER>1</STARTLAYER>
</SMSvrXML>
我必须逐一读出REC节点,依次添加,代码如下:
Dim T As New DataTable
Dim Values() As String
Dim HasGet as boolean = false
While X.Read
If X.NodeType = XmlNodeType.Element Then
If X.Name = "REC" Then
if not hasget then
X.MoveToFirstAttribute()
For cFields = 0 To X.AttributeCount - 1
t.Columns.Add(X.Name, System.Type.GetType("System.String"))
X.MoveToNextAttribute()
Next
X.MoveToElement()
ReDim Values(X.AttributeCount - 1)
hasget=true
End If
Dim ATT As Integer
For ATT = 0 To X.AttributeCount - 1
Values(ATT) = X.GetAttribute(ATT)
Next
t.Rows.Add(Values)
End If
End If
End While
FC = Nothing
然后再DataGrid1.DataBind,可这时DataGrid1的视图状态就没有保存,为什么?