为什么GridView有的列能更新,有的列不能更新?

ynduanlian 2009-06-20 08:32:49
请看我的全部代码,现在出现的奇怪现象是,GridView1一共三列显,点"编辑""更新",同时修改BrandName(名称)一列,和LogoURL字段(图标)一列时,LogoURL是可以修改其值的,但是BrandName的值始终不会变,这个是怎么回事呢?

<%@ Page Language="VB" Trace="False" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If (Session("ValidUser") <> "Admin") Then ClientScript.RegisterClientScriptBlock(Me.GetType, "Redirect", "<" & "script>parent.location='default.aspx';</" & "script>")

If Not Page.IsPostBack Then
LstAppCode_SelectedIndexChanged(sender, e)
End If
End Sub

Protected Sub LstAppCode_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
AccessDataSource1.SelectCommand = "Select * from [Brand] where AppCode='" & LstAppCode.SelectedValue & "'"
End Sub

Protected Sub LnkAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Server.Transfer("ht_AddBrand.aspx?AppCode=" & Server.UrlEncode(LstAppCode.SelectedValue))
End Sub

Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs)
AccessDataSource1.SelectCommand = "Select * from [Brand] where AppCode='" & LstAppCode.SelectedValue & "'"
End Sub

Protected Sub GridView1_RowUpdated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs)
AccessDataSource1.SelectCommand = "SELECT * FROM [Brand] Where AppCode='" & LstAppCode.SelectedValue & "'"
End Sub

Protected Sub GridView1_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs)
AccessDataSource1.SelectCommand = "SELECT * FROM [Brand] Where AppCode='" & LstAppCode.SelectedValue & "'"
End Sub
</script>


<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server" style="font-size:14px;">
选择频道:<asp:DropDownList ID="LstAppCode" runat="server" OnSelectedIndexChanged="LstAppCode_SelectedIndexChanged" AutoPostBack="true" >
<asp:ListItem Value="FZ">云南服装</asp:ListItem>
<asp:ListItem Value="HZPZYX">云南化妆品专业线</asp:ListItem>
<asp:ListItem Value="PE">云南普洱茶</asp:ListItem>
<asp:ListItem Value="NY">云南内衣</asp:ListItem>
<asp:ListItem Value="XY">云南鞋业</asp:ListItem>
<asp:ListItem Value="HZPRH">云南化妆品(日化)</asp:ListItem>
</asp:DropDownList>      
<asp:LinkButton ID="LnkAdd" runat="server" OnClick="LnkAdd_Click">新增品牌</asp:LinkButton>
<hr style="border-color:Lime; border-width:3px; border-style:ridge;" />
<div style="padding:10px 10px 10px 10px ">
<asp:GridView ID="GridView1" runat="server" DataSourceID="AccessDataSource1" AutoGenerateColumns="False"
DataKeyNames="BrandName,AppCode" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing" OnRowUpdated="GridView1_RowUpdated" OnRowCancelingEdit="GridView1_RowCancelingEdit" >
<Columns>
<asp:BoundField DataField="BrandName" HeaderText="名称" SortExpression="BrandName" />
<asp:BoundField DataField="AppCode" Visible="false" />
<asp:ImageField DataImageUrlField="LogoURL" HeaderText="图标" />
</Columns>
</asp:GridView>

<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="/App_Data/heart.mdb"
UpdateCommand="update [Brand] set LogoURL=@LogoURL,BrandName=@BrandName where AppCode=@AppCode and BrandName=@BrandName">
<UpdateParameters>
<asp:ControlParameter ControlID="GridView1" Name="LogoURL" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="AppCode" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="BrandName" Type="String" />
</UpdateParameters>
</asp:AccessDataSource>
</div>
</form>
</body>
</html>
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ynduanlian 2009-06-21
  • 打赏
  • 举报
回复
折腾了一天,终于明白真正的原因了;

在使用 System.Data.OleDb 提供程序时,参数化 SQL 语句中的参数顺序非常重要,您在 SelectCommand、UpdateCommand、InsertCommand 和 DeleteCommand 属性中指定的任何参数化 SQL 查询都必须与相应参数集合中的任何 Parameter 对象的顺序相匹配。如果在 AccessDataSource 上没有指定参数集合,则提供给这些操作的参数顺序必须与它们在基础 SQL 语句中的顺序相匹配。有关更多信息,请参见 对 SqlDataSource 控件使用参数。


由于数据绑定控件中基于绑定字段的参数将按照下列顺序从参数字典添加到命令中:Values、Keys 和 OldValues。
所以当DataKeyNames中有多个字段值时,它的排列顺序必须与UpdateCommand中参数排列顺序一致才行
koukoujiayi 2009-06-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ynduanlian 的回复:]
噢,明白原因了,但不知道如何解决:

当我点击编辑修改了BrandName时,查询条件就查不出该修改的记录了
[/Quote]
查修改后的记录!!怎么会不行呢?
可能金太阳的主体思想有问题哦!!
ynduanlian 2009-06-20
  • 打赏
  • 举报
回复
噢,似乎是不能把GridView的DataKeyNames里的项不能进行编辑更改啊
ynduanlian 2009-06-20
  • 打赏
  • 举报
回复
噢,明白原因了,但不知道如何解决:

update [Brand] set LogoURL=@LogoURL,BrandName=@BrandName where AppCode=@AppCode and BrandName=@BrandName

当我点击编辑修改了BrandName时,查询条件就查不出该修改的记录了
课程首先介绍了Flutter的主要知识,通过4个案例消化吸收知识点。并通过手把手一步步带您完成一个【我的备忘录】APP项目,使得您真正认识Flutter在实际项目中的优势。  通过本课程学习您可以学习到Flutter技术如下知识:第1章 Flutter概述知识点:移动应用开发现状、移动应用开发类型、Hybrid与移动跨平台开发策略、Flutter是什么?、Flutter特点、Flutter体系结构。第2章 Flutter开发环境搭建知识点:基于Windows的Android开发环境、基于macOS的iOS开发环境、IDE开发工具设置。第3章 Flutter基础知识点:完成一个Flutter程序、一切都是组件(Widget)、组件分类、使用图片和图标资源、使用文本组件、增加调试组件工具。第4章 布局组件知识点:Flutter布局概述、容器布局(Container)、行(Row)、(Column)布局、层叠布局、ListView、GridView。第5章 Material风格组件知识点:按钮、输入框、复选框、单选按钮、开关按钮、滑块。第6章 iOS Cupertino风格组件知识点:iOS Cupertino页面、Cupertino按钮、Cupertino开关按钮、Cupertino滑块、Cupertino分段控件。第7章 状态管理知识点:状态管理概述、局部状态管理、全局状态管理。第8章 导航知识点:导航概述、面包屑导航、标签导航、页面组件分散在不同文件中、全局状态管理与导航。第9章 工程依赖管理知识点:工程依赖管理概述、pub依赖管理工具。第10章 数据存储知识点:Flutter数据存储策略、键值对数据存储、文件数据存储、SQLite数据存储、示例:数据CRUD操作。第11章 网络通信知识点:搭建自己的Web服务器、使用http包、示例:城市信息表。第12章 项目实战:我的备忘录APP知识点:备忘录APP项目说明、备忘录项目后台Web服务API说明、备忘录APP项目分析与设计、初始化工程、持久层实现、表示层实现。 

62,074

社区成员

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

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

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

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