在datagrid中做update,提交得到的数据是原来的值而不是修改后的,怪哉!

12345_ 2004-07-09 03:47:39
rt
...全文
173 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
12345_ 2004-07-12
  • 打赏
  • 举报
回复
谢谢谢谢!继续革命!
supermarrio 2004-07-10
  • 打赏
  • 举报
回复
12345_(上山打老虎) ,呵呵,楼主老兄,竟然这样说你们老板,小心被黑啊,呵呵。我马上就转C#了,学习
tangyy 2004-07-09
  • 打赏
  • 举报
回复
up
awfe 2004-07-09
  • 打赏
  • 举报
回复
五星啊,开眼了
bushido 2004-07-09
  • 打赏
  • 举报
回复
小心postback
acewang 2004-07-09
  • 打赏
  • 举报
回复
翻页的事件里面也需要重新绑定DataGrid :-)
12345_ 2004-07-09
  • 打赏
  • 举报
回复

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_Families]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[SP_Families]
GO

CREATE TABLE [dbo].[SP_Families] (
[Family_ID] [bigint] IDENTITY (1, 1) NOT NULL ,
[Family_Name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Family_Subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Family_Date] [datetime] NULL
) ON [PRIMARY]
GO

表结构,拜托帮忙测试!
famousun 2004-07-09
  • 打赏
  • 举报
回复
编辑事件处理里面也要databind
12345_ 2004-07-09
  • 打赏
  • 举报
回复
没办法!我们经理每天闲着没事就瞎改我们的代码,为了然他看不懂,只好学点新东西,asp.net刚看了两天,呵呵!
supermarrio 2004-07-09
  • 打赏
  • 举报
回复
晕,你程序和代码写到一起看的我头晕,呵呵
xinshaw 2004-07-09
  • 打赏
  • 举报
回复
注意PostBack
12345_ 2004-07-09
  • 打赏
  • 举报
回复
lblEnabled.InnerHtml = UpdateCmd
Return
是用来调试的,忘了去掉。

加了If Not IsPostBack Then 是可以了,可是要点两次“编辑”才会转到编辑状态,input里的默认值也没了,翻页也翻不动了。
汗!
famousun 2004-07-09
  • 打赏
  • 举报
回复
Sub MyDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)

Dim DS As DataSet
Dim MyCommand As SqlCommand
Dim UpdateCmd As String

Dim id as Integer = MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))

Dim CurrentTextBox As TextBox
CurrentTextBox = E.Item.Cells(2).Controls(0)
Dim sName as String = CurrentTextBox.Text

CurrentTextBox = E.Item.Cells(3).Controls(0)
Dim sSubject as String = CurrentTextBox.Text
UpdateCmd = "UPDATE SP_Families SET Family_Name = '" & sName & "', Family_Subject = '" & sSubject & "' where Family_ID = " & id
lblEnabled.InnerHtml = UpdateCmd

Return '这个地方是不是多了一个return?,VB不是很熟

MyCommand = New SqlCommand(UpdateCmd, MyConnection)

MyCommand.Connection.Open()

Try
MyCommand.ExecuteNonQuery()
lblEnabled.InnerHtml = "<b>已更新记录</b><br>" & UpdateCmd.ToString()
MyDataGrid.EditItemIndex = -1
Catch Exp As SQLException
If Exp.Number = 2627
lblEnabled.InnerHtml = "错误:已存在具有相同主键的记录"
Else
lblEnabled.InnerHtml = "错误:未能更新记录,请确保正确填写了字段"
End If
lblEnabled.Style("color") = "red"
End Try

MyCommand.Connection.Close()

BindGrid()
acewang 2004-07-09
  • 打赏
  • 举报
回复
If Not IsPostBack Then
MyConnection = New SqlConnection("server=localhost;uid=sa;pwd=aaa;database=test")
BindGrid()
End IF
acewang 2004-07-09
  • 打赏
  • 举报
回复
Page_Load:中初始化DataGrid的代码放置在
if (!IsPostBack)
{
//here
}
famousun 2004-07-09
  • 打赏
  • 举报
回复
你不会后台没写东西吧
12345_ 2004-07-09
  • 打赏
  • 举报
回复

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<html>
<link rel="stylesheet" href="css/BentooCommonControls.css" type="text/css">
<script language="VB" runat="server">
Dim MyConnection As SqlConnection

Function CreateDataSource() As ICollection
Dim MyCommand As SqlDataAdapter = new SqlDataAdapter("select * from SP_Families order by Family_ID DESC", MyConnection)

Dim DS As DataSet = new DataSet()
MyCommand.Fill(DS, "SP_Families")

Dim dv As New DataView(DS.Tables("SP_Families"))
Return dv
End Function


Sub Page_Load(sender As Object, e As EventArgs)
MyConnection = New SqlConnection("server=localhost;uid=sa;pwd=aaa;database=test")
BindGrid()
End Sub


Sub MyDataGrid_Page(sender As Object, e As DataGridPageChangedEventArgs)
MyDataGrid.CurrentPageIndex = e.NewPageIndex
BindGrid()
End Sub


Sub BindGrid()
MyDataGrid.DataSource = CreateDataSource()
MyDataGrid.DataBind()

End Sub

Sub addNewValue(sender As Object, e As EventArgs)
Dim sSQL as String
Dim MyCommand As SqlCommand
sSQL = "insert into SP_Families (Family_Name,Family_Subject) values ('" & fName.value & "','" & fSubject.value & "')"

MyCommand = New SqlCommand(sSQL, MyConnection)
MyCommand.Connection.Open()
Try
MyCommand.ExecuteNonQuery()
lblEnabled.InnerHtml = "<b>已添加记录</b><br>" & sSQL.ToString()
Catch Exp As SQLException
lblEnabled.InnerHtml = Exp.Number
If Exp.Number = 2627
lblEnabled.InnerHtml = "错误:已存在具有相同主键的记录"
Else
lblEnabled.InnerHtml = "错误:未能添加记录,请确保正确填写了字段"
End If
End Try
MyCommand.Connection.Close()
BindGrid()
lblEnabled.InnerHtml = sSQL
End Sub

Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub

Sub MyDataGrid_Cancel(Sender As Object, E As DataGridCommandEventArgs)

MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub

Sub MyDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)

Dim DS As DataSet
Dim MyCommand As SqlCommand
Dim UpdateCmd As String

Dim id as Integer = MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))

Dim CurrentTextBox As TextBox
CurrentTextBox = E.Item.Cells(2).Controls(0)
Dim sName as String = CurrentTextBox.Text

CurrentTextBox = E.Item.Cells(3).Controls(0)
Dim sSubject as String = CurrentTextBox.Text
UpdateCmd = "UPDATE SP_Families SET Family_Name = '" & sName & "', Family_Subject = '" & sSubject & "' where Family_ID = " & id
lblEnabled.InnerHtml = UpdateCmd
Return
MyCommand = New SqlCommand(UpdateCmd, MyConnection)

MyCommand.Connection.Open()

Try
MyCommand.ExecuteNonQuery()
lblEnabled.InnerHtml = "<b>已更新记录</b><br>" & UpdateCmd.ToString()
MyDataGrid.EditItemIndex = -1
Catch Exp As SQLException
If Exp.Number = 2627
lblEnabled.InnerHtml = "错误:已存在具有相同主键的记录"
Else
lblEnabled.InnerHtml = "错误:未能更新记录,请确保正确填写了字段"
End If
lblEnabled.Style("color") = "red"
End Try

MyCommand.Connection.Close()

BindGrid()
End Sub

</script>

<body>
<p>
<h3>Paging with DataGrid</h3>


<form runat=server>

<table bgcolor="#eeeeee" border="0" cellpadding="6">
<tr>
<td>系列名称:</td>
<td><Input id="fName" runat="server"></td>
<td>系列主题:</td>
<td><Input id="fSubject" runat="server"></td>
</tr>
<tr>
<td align="right" colspan="4"><Input Type="button" onserverclick="addNewValue" class="posbtn" value=" 新增 " runat="server"></td>
</tr>
</table><br>

<asp:DataGrid id="MyDataGrid" runat="server"
AllowPaging="True"
PageSize="10"
PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="right"
OnPageIndexChanged="MyDataGrid_Page"
BorderColor="black"
Width="800"
border="0"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
DataKeyField="Family_ID"
AutoGenerateColumns="false"
>
<Columns>
<asp:EditCommandColumn EditText="编辑" CancelText="取消" UpdateText="更新" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="Family_ID" SortExpression="Family_ID" ReadOnly="True" DataField="Family_ID" ItemStyle-Wrap="false"/>
<asp:BoundColumn HeaderText="Family_Name" SortExpression="Family_Name" DataField="Family_Name"/>
<asp:BoundColumn HeaderText="Family_Subject" SortExpression="Family_Subject" DataField="Family_Subject"/>
<asp:BoundColumn HeaderText="Family_Date" SortExpression="Family_Date" ReadOnly="True" DataField="Family_Date" ItemStyle-Wrap="false"/>
</Columns>
</asp:DataGrid>
<p>

<table bgcolor="#eeeeee" cellpadding="6">
<tr>
<td nowrap>


<span id="lblEnabled" EnableViewState="false" style="font: arial 11pt;" runat="server"/>


</td>
</tr>
</table>

</form>

</body>
</html>
famousun 2004-07-09
  • 打赏
  • 举报
回复
代码出来看看

62,046

社区成员

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

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

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

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