gridiew更新怎么会把所有记录条的字段全部更新成一样的了?
<asp:TemplateField HeaderText= "名称 " SortExpression= "Name ">
<EditItemTemplate>
<asp:TextBox ID= "TextBox1 " runat= "server " Text= ' <%# Bind( "Name ") %> '> </asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID= "Label4 " runat= "server " Text= ' <%# Bind( "Name ") %> '> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText= "添加时间 " SortExpression= "AddTime ">
<EditItemTemplate>
<asp:TextBox ID= "TextBox2 " runat= "server " Text= ' <%# Bind( "AddTime ") %> '> </asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID= "Label5 " runat= "server " Text= ' <%# Bind( "AddTime ") %> '> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText= "是否隐藏 " SortExpression= "IsShow ">
<EditItemTemplate>
<asp:CheckBox ID= "CheckBox1 " runat= "server " Checked= ' <%# Bind( "IsShow ") %> ' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID= "CheckBox1 " runat= "server " Checked= ' <%# Bind( "IsShow ") %> ' Enabled= "false " />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader= "False ">
<EditItemTemplate>
<asp:LinkButton ID= "LinkButton1 " runat= "server " CausesValidation= "True " CommandName= "Update "
Text= "更新 "> </asp:LinkButton>
<asp:LinkButton ID= "LinkButton2 " runat= "server " CausesValidation= "False " CommandName= "Cancel "
Text= "取消 "> </asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID= "LinkButton1 " runat= "server " CausesValidation= "False " CommandName= "Edit "
Text= "编辑 "> </asp:LinkButton>
<asp:LinkButton ID= "LinkButton2 " runat= "server " CausesValidation= "False " CommandName= "Select "
Text= "选择 "> </asp:LinkButton>
<asp:LinkButton ID= "LinkButton3 " runat= "server " CausesValidation= "False " CommandName= "Delete "
Text= "删除 "> </asp:LinkButton>
</ItemTemplate>
------------------------——————
<asp:ObjectDataSource ID= "ObjectDataSource1 " runat= "server " UpdateMethod= "UpdateSimpleData ">
<UpdateParameters>
<asp:Parameter Name= "Name " Type= "String " />
<asp:Parameter Name= "AddTime " Type= "DateTime " />
<asp:Parameter Name= "IsShow " Type= "Boolean " />
</UpdateParameters>
</asp:ObjectDataSource>
——————————————————————————
'更新简单数据
Public Sub UpdateSimpleData(ByVal Name As String, ByVal AddTime As Date, ByVal IsShow As Boolean)
conn.Open()
Access = "update Product_Info set Name=@Name, AddTime=@AddTime, IsShow=@IsShow "
Cmd = New OleDbCommand(Access, conn)
Cmd.Parameters.Add( "@Name ", OleDbType.Char).Value = Name
Cmd.Parameters.Add( "@AddTime ", OleDbType.Date).Value = AddTime
Cmd.Parameters.Add( "@IsShow ", OleDbType.Boolean).Value = IsShow
Try
Cmd.ExecuteNonQuery()
conn.Close()
Catch ex As Exception
End Try
End Sub
用ObjectDataSource添加业务层的update方法,但是我编辑更新一条记录的时候,其他所有数据也跟着update成一样了。
[解决办法]
1.Access = "update Product_Info set Name=@Name, AddTime=@AddTime, IsShow=@IsShow "
*******************
这条语句需要指定更新哪一条记录,否则就变成全部更新了,正确的写法
Access = "update Product_Info set Name=@Name, AddTime=@AddTime, IsShow=@IsShow where Id=@Id "
2.Try
Cmd.ExecuteNonQuery()
conn.Close()
Catch ex As Exception
End Try
***********
conn.Close()写到finally语句中,
[解决办法]
LS正确, 要where条件。。不然就全部更新了。添加多个参数。