更新数据时出错了

uhopenet 2004-08-10 08:56:21
如下程序,在提交更新数据时提示出错,请问,是什么原因,如何解决
<%@ Page Debug="true" %>
<%@Import Namespace=System.Data%>
<%@Import Namespace=System.Data.OLEDB%>
<!--#Include File="GetTable.aspx"-->
<Html>
<Form Runat="Server">
<ASP:DataGrid Id="dgA" AllowPaging="True" PageSize="5"
OnPageIndexChanged="dgA_PageChg" Runat="Server"
PagerStyle-Mode="NumericPages" BorderColor="#808080"
HeaderStyle-Font-Names="Courier New" HeaderStyle-BackColor="#D1DCEB"
HeaderStyle-HorizontalAlign="Center" AutoGenerateColumns="False"
OnEditCommand="dgA_ECmd" OnUpdateCommand="dgA_UCmd"
OnCancelCommand="dgA_CCmd" >
<Columns>
<ASP:TemplateColumn>
<HeaderTemplate>ID</HeaderTemplate>
<ItemTemplate><%#Container.DataItem("ID")%></ItemTemplate>

</ASP:TemplateColumn>
<ASP:TemplateColumn>
<HeaderTemplate>SmallClassID</HeaderTemplate>
<ItemTemplate><%#Container.DataItem("SmallClassID")%></ItemTemplate>
<EditItemTemplate>
<ASP:TextBox Id="txtSmallClassID" Text='<%#Container.DataItem("SmallClassID")%>' Runat="Server"/>
</EditItemTemplate>
</ASP:TemplateColumn>
<ASP:TemplateColumn>
<HeaderTemplate>BigClassName</HeaderTemplate>
<ItemTemplate><%#Container.DataItem("BigClassName")%></ItemTemplate>
<EditItemTemplate>
<ASP:TextBox Id="txtBigClassName" Text='<%#Container.DataItem("BigClassName")%>' Runat="Server"/>
</EditItemTemplate>
</ASP:TemplateColumn>
<ASP:TemplateColumn>
<HeaderTemplate>SmallClassName</HeaderTemplate>
<ItemTemplate><%#Container.DataItem("SmallClassName")%></ItemTemplate>
<EditItemTemplate>
<ASP:TextBox Id="txtSmallClassName" Text='<%#Container.DataItem("SmallClassName")%>' Runat="Server"/>
</EditItemTemplate>
</ASP:TemplateColumn>
<ASP:EditCommandColumn HeaderText="编辑" EditText="编辑" UpdateText="更新" CancelText="放弃"/>
</Columns>
</ASP:DataGrid>
</Form>
<Script Language="VB" Runat="Server">
Dim dtDataTable As DataTable

Sub Page_Load(Sender As Object, e As EventArgs)
If Page.IsPostBack=False Then
BindGrid()
End If
End Sub

Sub BindGrid() '数据系结程序
dtDataTable=GetTable("d:\Inetpub\wwwroot\nettest\news400xp.mdb", "SmallClass")
dgA.DataSource=dtDataTable.DefaultView
Page.DataBind()
End Sub

Sub dgA_PageChg(Sender As Object, e As DataGridPageChangedEventArgs) ' 换页程序
BindGrid()
End Sub

Sub dgA_ECmd(Sender As Object, e As DataGridCommandEventArgs) '进入编辑模式
dgA.EditItemIndex=e.Item.ItemIndex
BindGrid()
End Sub

Sub dgA_UCmd(Sender As Object, e As DataGridCommandEventArgs) '数据更新程序
Dim shtR As Short=(dgA.CurrentPageIndex * dgA.PageSize) + e.Item.ItemIndex
Dim txtTemp As TextBox
'为了便利起见而将dtDataTable指向目标数据表
response.write(shtR & "<br>")
dtDataTable=GetTable("d:\Inetpub\wwwroot\nettest\news400xp.mdb", "SmallClass")
'txtTemp=e.Item.FindControl("txtID") '搜寻DataListItem 内的控件
'dtDataTable.Rows(shtR)("ID")=txtTemp.Text '将找到的控制之Text 属性更新回相对应的记录中
txtTemp=e.Item.FindControl("txtSmallClassID")
response.write(txtTemp.Text & "<br>")
dtDataTable.Rows(shtR)("SmallClassID")=CInt(txtTemp.Text)
txtTemp=e.Item.FindControl("txtBigClassName")
response.write(txtTemp.Text & "<br>")
dtDataTable.Rows(shtR)("BigClassName")=txtTemp.Text
txtTemp=e.Item.FindControl("txtSmallClassName")
response.write(txtTemp.Text & "<br>")
dtDataTable.Rows(shtR)("SmallClassName")=txtTemp.Text
response.write(dscA.UpdateCommand)
dscA.Update(dsDataSet,"SmallClass") '将所作的改变更新回数据源
dgA.EditItemIndex=-1
BindGrid()
End Sub

Sub dgA_CCmd(Sender As Object, e As DataGridCommandEventArgs)
dgA.EditItemIndex=-1
BindGrid()
End Sub

</SCRIPT>
</Html>
错误提示:
Server Error in '/' Application.
--------------------------------------------------------------------------------

Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Update requires a valid UpdateCommand when passed DataRow collection with modified rows.

Source Error:


Line 85: dtDataTable.Rows(shtR)("SmallClassName")=txtTemp.Text
Line 86: response.write(dscA.UpdateCommand)
Line 87: dscA.Update(dsDataSet,"SmallClass") '将所作的改变更新回数据源
Line 88: dgA.EditItemIndex=-1
Line 89: BindGrid()


Source File: D:\Inetpub\wwwroot\nettest\DataGrid_template.aspx Line: 87
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vzxq 2004-08-10
  • 打赏
  • 举报
回复
nod
uhopenet 2004-08-10
  • 打赏
  • 举报
回复
我使用的是OleDbDataAdapter对象,在GetTable.aspx文件上有定义
ppp80 2004-08-10
  • 打赏
  • 举报
回复
同意楼上
triout 2004-08-10
  • 打赏
  • 举报
回复
要调用UPDATE方法,DATAADAPTER必须有UPDATECOMMAND对象等。
从你的错误来看,很明显,dscA没有设置UpdateCommand对象,当然不能更新,也就会报告错误了。

解决:

Dim bc as new OleDbBuilderCommand(dscA)

dscA.UpdateCommand=bc.GetUpdateCommand()
dscA.InsertCommand=bc.GetInsertCommand()
dscA.DeleteCommand=bc.getDeleteCommand()

62,046

社区成员

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

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

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

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