看看这个更新错在哪里?

muxinpp 2002-12-17 09:30:52
更新时,提时更新成功,但是数据库里没有改变!
.......
......

'----------------Update-----------

Sub MyDataGrid_Update(s as object,e as DataGridCommandEventArgs)
dim ds as dataset,updatesql as string
dim cmd as oledbcommand
dim conn as oledbconnection
dim i as integer,a as integer
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("test.mdb"))
updatesql="update a set name=@n,pass=@p,content=@c where id=@id"
cmd=new oledbcommand(updatesql,conn)
With cmd.Parameters
.add(new oledbparameter("@id",oledbtype.integer))
.Add(New OleDbParameter("@n", OleDbType.Char))
.Add(New OleDbParameter("@p", OleDbType.Char))
.Add(New OleDbParameter("@c", OleDbType.Char))
End With
cmd.Parameters("@id").Value = MyDataGrid.DataKeys(Int(E.Item.ItemIndex))
dim ai() as string={"@id","@n","@p","@c"}
for i=2 to e.Item.Cells.Count-1
cmd.parameters(ai(i-1)).Value=Ctype(e.Item.Cells(i).Controls(0), TextBox).Text
next
cmd.connection.open()
cmd.executenonquery()
cmd.Connection.Close()
message.InnerHtml="<b>已更新记录</b>"&e.Item.Cells.Count
cmd.Dispose()
conn.Close()
conn.Dispose()
BindGrid()
End Sub
'--------------------------
...
...

<asp:datagrid id="mydatagrid" runat="server"
width=500
font-size=12px
font-name=verdana
cellpadding=5
align=center
headerstyle-backcolor=#e8e8e8
AllowPaging="True"
AllowSorting="true"
PageSize="12"
PagerStyle-HorizontalAlign="Right"
AlternatingItemStyle-BackColor=#fbfbfb
OnPageIndexChanged="ChangePage"
PagerStyle-NextPageText="下一页"
PagerStyle-PrevPageText="上一页"
PagerStyle-Mode="NumericPages"
OnEditCommand="MyDataGridEdit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
DataKeyField="id"
AutoGenerateColumns="false"
>
<Columns>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="ID" SortExpression="id" ReadOnly="True" DataField="id" ItemStyle-Wrap="false"/>
<asp:boundcolumn headertext="用户名" sortexpression="name" datafield="name"/>
<asp:boundcolumn headertext="密码" sortexpression="pass" datafield="pass"/>
<asp:boundcolumn headertext="内容" sortexpression="content" datafield="content"/>
</Columns>
</asp:datagrid>
...全文
77 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
muxinpp 2002-12-17
  • 打赏
  • 举报
回复
怎么回事?!
muxinpp 2002-12-17
  • 打赏
  • 举报
回复
那个是对的!
我发现是id传值的时候错了!
我把id值设成一个常量就可以更新!
如果是传值就更新不了!
为什么?!
icyer 2002-12-17
  • 打赏
  • 举报
回复
Ctype(e.Item.Cells(i).Controls(0), TextBox).Text的值呢?
或者你不要用动态SQL,而直接写一个SQL语句来更新。
muxinpp 2002-12-17
  • 打赏
  • 举报
回复
值没错!是我要更新的id值
icyer 2002-12-17
  • 打赏
  • 举报
回复
看看MyDataGrid.DataKeys(Int(E.Item.ItemIndex))的值,是否正确。
muxinpp 2002-12-17
  • 打赏
  • 举报
回复
0个
icyer 2002-12-17
  • 打赏
  • 举报
回复
Dim i As Integer
i = cmd.executenonquery()
Response.Write(i)
看看更新的记录数。
muxinpp 2002-12-17
  • 打赏
  • 举报
回复
放了!!!
icyer 2002-12-17
  • 打赏
  • 举报
回复
在Page_Load里,绑定DataGrid的代码有没有放在IsPostBack里面?
andy_123 2002-12-17
  • 打赏
  • 举报
回复
在这里设断点:
cmd.Parameters("@id").Value = MyDataGrid.DataKeys(Int(E.Item.ItemIndex))
看看能否取到值
muxinpp 2002-12-17
  • 打赏
  • 举报
回复

62,250

社区成员

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

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

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

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