使用ViewState出了个问题???

mywebcn 2002-04-19 02:13:31
异常详细信息: System.NullReferenceException: 未设置对象变量或 With 块变量。

代码如下。*号里面是出错的语句!!!!!!!!!
<%@ Page Language="vb"%>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.OLEDB"%>
<Script runat="server">

Dim ds as DataSet
Dim blnSet as Boolean = False



Function CreateDataSet as DataSet

Dim i as Integer
Dim arrColors() as String'定义一个存储颜色的数组

'********************************************
'以下代码判断 视图状态Colors 是否存在,如果不存在则自动给数组赋值,如果存在则把视图状态的值赋给数组
'********************************************
If ViewState("Colors") is Nothing then
arrColors = New String(6) {"red","orange","yellow","green","blue","indigo","violet"}
Else
arrColors = ViewState("Colors")
End if


ds = New DataSet("MyDataSet")'创建一个空DataSet


'以下代码新建一个表 并添加字段 Color、ID
Dim dTable as New DataTable("Colors")
dTable.Columns.Add("Color",GetType(String))
dTable.Columns.Add("ID",GetType(Int32))

ds.Tables.Add(dTable)'将上面建的表添加到空 DataSet 中

'开始向表中添加行数据
For i=0 to 6

Dim dr as DataRow = dTable.NewRow()
dr(0) = arrColors(i).ToString
dr(1) = i
dTable.Rows.Add(dr)

Next


return ds'返回这个DataSet

End Function






Sub Page_Load(obj as Object,e as EventArgs)

ds = CreateDataSet

blnSet = true
If not Page.IsPostBack then'如果是第一次显示,则调用数据绑定
BindGrid
End if

End Sub

Sub BindGrid()

dgColors.DataSource = ds
dgColors.DataMember = "Colors"
dgColors.DataBind()'记得一定要数据绑定

End Sub



Sub ChangeColor(obj as Object,e as DataGridItemEventArgs)

Dim intIndex as Integer = e.Item.ItemIndex
If blnSet then
If intIndex>0 then
dgColors.Items(intIndex -1).BackColor = Drawing.Color.FromName(ds.Tables("Colors").Rows(intIndex-1)("Color"))
dgColors.Items(intIndex -1).ForeColor = Drawing.Color.FromName(ds.Tables("Colors").Rows(6-intIndex)("Color"))

End if
End if

End Sub




Sub dgColors_Edit(obj as Object,e as DataGridCommandEventArgs)

dgColors.EditItemIndex = e.Item.ItemIndex
BindGrid()

End Sub

Sub dgColors_Cancel(obj as Object,e as DataGridCommandEventArgs)


End Sub

Sub dgColors_Update(obj as Object,e as DataGridCommandEventArgs)

Dim strColor as String = CType(e.Item.Cells(1).Controls(0),TextBox).Text

ds.Tables("Colors").Rows(e.Item.ItemIndex)("Color") = strColor
************************************************************************
ViewState("Colors")(e.Item.ItemIndex) = strColor
*************************************************************************
dgColors.EditItemIndex = -1

BindGrid()

End Sub


</Script>
<html>
<body>
<form runat="server">
<asp:DataGrid ID="dgColors" Runat="server" AutoGenerateColumns="False" Width="20" OnEditCommand="dgColors_Edit" OnCancelCommand="dgColors_Cancel" OnUpdateCommand="dgColors_Update" OnItemCreated="ChangeColor">
<Columns>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lblID" Runat="server" Text='<%# Container.DataItem("ID")%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Color" HeaderText="Color"></asp:BoundColumn>
<asp:EditCommandColumn HeaderText="Change" EditText="Edit" UpdateText="Change" CancelText="Cancel"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
...全文
23 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
icyer 2002-04-19
  • 打赏
  • 举报
回复
这里有一个例子:
Dim str(2) As String
str(0) = "abc"
str(1) = "bcd"
ViewState("strs") = str
Dim str2() As String = ViewState("strs")
Response.Write(str2(0)) '将输出abc

mywebcn 2002-04-19
  • 打赏
  • 举报
回复
不行啊。
我这样写:
Dim str() as String = ViewState("Colors")

****str(e.Item.ItemIndex) = strColor
ViewState("Colors") = str
dgColors.EditItemIndex = -1

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
icyer 2002-04-19
  • 打赏
  • 举报
回复
try it:

Dim str As string[] = CType(ViewState("Colors"), string[])
str(e.Item.ItemIndex) = strColor
ViewState("Colors") = str


天哪,好久没写VB,都不习惯这种格式了。

62,046

社区成员

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

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

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

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