上面没提示哪一行出错了! <!--源文件:form\ServerControl\FormDataList01.aspx--> <%@ Import Namespace="System.Data" %> <html> <script language="VB" runat="server"> dim Book As DataTable dim BookView As DataView '设置数据源,并绑定 Sub BindList() DataList1.DataSource= BookView DataList1.DataBind End Sub Sub Page_Load(s As Object, e As EventArgs) Dim dr As DataRow dim i as int32 '如果没有连接变量session_book,定义数据表Book,并载入实验数据 if session("session_Book") = Nothing then Book = New DataTable() Book.Columns.Add(new DataColumn("num", GetType(string))) Book.Columns.Add(new DataColumn("name", GetType(String))) Book.Columns.Add(new DataColumn("price", GetType(String))) session("session_Book") = Book '载入部分测试数据 For i = 1 To 6 dr = Book.NewRow() dr(0)=i.ToString dr(1) = "书名 " & i.ToString dr(2) = ( 1.11* i).ToString Book.Rows.Add(dr) Next '有session_book变量,直接引用 Else Book = session("session_Book") end if '产生数据视图,并按num字段排序 BookView = New DataView(Book) BookView.Sort="num" '初次需绑定数据源 if Not IsPostBack then BindList End If End Sub '编辑处理函数 Sub DataList_EditCommand(sender As Object, e As DataListCommandEventArgs) DataList1.EditItemIndex = e.Item.ItemIndex BindList End Sub '取消处理函数 Sub DataList_CancelCommand(sender As Object, e As DataListCommandEventArgs) DataList1.EditItemIndex = -1 BindList End Sub '更新处理函数 Sub DataList_UpdateCommand(sender As Object, e As DataListCommandEventArgs) Dim lbl1 As Label = e.Item.FindControl("lblNum") Dim txt2 As TextBox = e.Item.FindControl("txtBook") Dim txt3 As TextBox = e.Item.FindControl("txtPrice") dim strNum as String dim strBook as String dim strPrice as String strNum=lbl1.text strBook=txt2.text strPrice=txt3.text '用先删除再插入的方式,实现数据的更新操作 BookView.RowFilter = "num='" & strNum & "'" If BookView.Count > 0 Then BookView.Delete(0) End If BookView.RowFilter = "" dim dr as DataRow=Book.NewRow() dr(0) = strNum dr(1) = strBook dr(2) = strPrice Book.Rows.Add(dr) DataList1.EditItemIndex = -1 BindList End Sub </script> <head> <title> 数据列表修改实验 </title> </head> <body> <center> <h2>数据列表修改实验</h2> <hr> <p></p> <form runat=server> <font face="Verdana" size="-1"> <!--编辑时显示绿色,并定义编辑、修改、取消时的处理函数--> <asp:DataList id="DataList1" runat="server" BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" Width="150px" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="Gainsboro" EditItemStyle-BackColor="green" OnEditCommand="DataList_EditCommand" OnUpdateCommand="DataList_UpdateCommand" OnCancelCommand="DataList_CancelCommand" > <HeaderTemplate> <center><h>书籍序号</h></center> </HeaderTemplate> <ItemTemplate> <asp:LinkButton id="button1" runat="server" Text="详细" CommandName="edit" /> <%# Container.DataItem("name") %> </ItemTemplate> <EditItemTemplate> 书籍: 序号 <asp:Label id="lblNum" runat="server" Text='<%# Container.DataItem("num") %>' /> <br> 书名: <asp:TextBox id="txtBook" runat="server" Text='<%# Container.DataItem("name") %>' /><br> 价格: <asp:TextBox id="txtPrice" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "price") %>' /> <br> <center> <asp:Button id="button2" runat="server" Text="修 改" CommandName="update" /> <asp:Button id="button3" runat="server" Text="撤 消" CommandName="cancel" /> </center> </EditItemTemplate> </asp:DataList> </font> </form> </center> </body> </html>
<!--源文件:form\ServerControl\FormDataList01.aspx-->
<%@ Import Namespace="System.Data" %>
<html>
<script language="VB" runat="server">
dim Book As DataTable
dim BookView As DataView
'设置数据源,并绑定
Sub BindList()
DataList1.DataSource= BookView
DataList1.DataBind
End Sub
Sub Page_Load(s As Object, e As EventArgs)
Dim dr As DataRow
dim i as int32
'如果没有连接变量session_book,定义数据表Book,并载入实验数据
if session("session_Book") = Nothing then
Book = New DataTable()
Book.Columns.Add(new DataColumn("num", GetType(string)))
Book.Columns.Add(new DataColumn("name", GetType(String)))
Book.Columns.Add(new DataColumn("price", GetType(String)))
session("session_Book") = Book
'载入部分测试数据
For i = 1 To 6
dr = Book.NewRow()
dr(0)=i.ToString
dr(1) = "书名 " & i.ToString
dr(2) = ( 1.11* i).ToString
Book.Rows.Add(dr)
Next
'有session_book变量,直接引用
Else
Book = session("session_Book")
end if
'产生数据视图,并按num字段排序
BookView = New DataView(Book)
BookView.Sort="num"
'初次需绑定数据源
if Not IsPostBack then
BindList
End If
End Sub
'编辑处理函数
Sub DataList_EditCommand(sender As Object, e As DataListCommandEventArgs)
DataList1.EditItemIndex = e.Item.ItemIndex
BindList
End Sub
'取消处理函数
Sub DataList_CancelCommand(sender As Object, e As DataListCommandEventArgs)
DataList1.EditItemIndex = -1
BindList
End Sub
'更新处理函数
Sub DataList_UpdateCommand(sender As Object, e As DataListCommandEventArgs)
Dim lbl1 As Label = e.Item.FindControl("lblNum")
Dim txt2 As TextBox = e.Item.FindControl("txtBook")
Dim txt3 As TextBox = e.Item.FindControl("txtPrice")
dim strNum as String
dim strBook as String
dim strPrice as String
strNum=lbl1.text
strBook=txt2.text
strPrice=txt3.text
'用先删除再插入的方式,实现数据的更新操作
BookView.RowFilter = "num='" & strNum & "'"
If BookView.Count > 0 Then
BookView.Delete(0)
End If
BookView.RowFilter = ""
dim dr as DataRow=Book.NewRow()
dr(0) = strNum
dr(1) = strBook
dr(2) = strPrice
Book.Rows.Add(dr)
DataList1.EditItemIndex = -1
BindList
End Sub
</script>
<head>
<title> 数据列表修改实验 </title>
</head>
<body>
<center>
<h2>数据列表修改实验</h2>
<hr>
<p></p>
<form runat=server>
<font face="Verdana" size="-1">
<!--编辑时显示绿色,并定义编辑、修改、取消时的处理函数-->
<asp:DataList id="DataList1" runat="server" BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" Width="150px" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="Gainsboro" EditItemStyle-BackColor="green" OnEditCommand="DataList_EditCommand" OnUpdateCommand="DataList_UpdateCommand" OnCancelCommand="DataList_CancelCommand" >
<HeaderTemplate>
<center><h>书籍序号</h></center>
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton id="button1" runat="server" Text="详细" CommandName="edit" />
<%# Container.DataItem("name") %>
</ItemTemplate>
<EditItemTemplate> 书籍: 序号 <asp:Label id="lblNum" runat="server" Text='<%# Container.DataItem("num") %>' />
<br>
书名: <asp:TextBox id="txtBook" runat="server" Text='<%# Container.DataItem("name") %>' /><br>
价格: <asp:TextBox id="txtPrice" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "price") %>' />
<br>
<center>
<asp:Button id="button2" runat="server" Text="修 改" CommandName="update" />
<asp:Button id="button3" runat="server" Text="撤 消" CommandName="cancel" />
</center>
</EditItemTemplate>
</asp:DataList>
</font>
</form>
</center>
</body>
</html>