gridview中使用dropdownlist的问题

nihuo 2008-12-09 12:52:23
1.我的GridView和DropDownList的数据源分别为数据源控件SqlDataSource1和SqlDataSource2;
2.DropDownList位于GridView的其中一列;
3.数据库中两个表,主表experimentDepart,字段为:
experimentDepartID tinyint primary key--部门ID
edName varchar 15--部门名
从表deviceSort,字段为:
deviceSortId tinyint primary key--设备分类ID
deviceSortName varchar 30--设备分类名称
experimentDepartID tinyint foreignkey reference experimentDepart(experimentDepartID)--部门ID,设备属于何部门

SqlDataSource1的SelectQuery中语句为:
SELECT deviceSort.deviceSortId, deviceSort.deviceSortName, experimentDepart.edName
FROM deviceSort
INNER JOIN experimentDepart
ON deviceSort.experimentDepartID = experimentDepart.experimentDepartID//gridview显示设备分类ID,设备分类名称,隶属部门三个字段
SqlDataSource1的UpdateQuery中语句为:
update deviceSort set deviceSortName = @deviceSortName,experimentDepartID = @experimentDepartID
where deviceSortId = @deviceSortId
SqlDataSource2的SelectQuery中语句为:
SELECT [experimentDepartID], [edName] FROM [experimentDepart]

DropDownList在gridview隶属部门那个列中,dataTextField为edName,dataValueField为experimentDepartID
该列为模板列,普通状态下为label,编辑状态下为dropdownlist。

现在问题是:打开页面时,gridview中三个列都显示为正确对应的内容,比如三个列分别为:
设备分类ID 设备分类名称 隶属部门
1 显示器 计算机部门
接着点击自带的编辑按钮选择dropdownlist中的别的部门,比如想为显示器换成文秘部门,
照理选完文秘部门,点更新应该为:
设备分类ID 设备分类名称 隶属部门
1 显示器 文秘部门
可是结果仍然为
设备分类ID 设备分类名称 隶属部门
1 显示器 计算机部门
表面上好像没有执行更新,但是如果页面开始为:
设备分类ID 设备分类名称 隶属部门
1 显示器 文秘部门
想更换显示器为网络部门即

设备分类ID 设备分类名称 隶属部门
1 显示器 网络部门
可点击更新后依然为
设备分类ID 设备分类名称 隶属部门
1 显示器 计算机部门
//注:下拉列表框从数据源中得来的第一项就是计算机部门
请大家帮忙看看是哪里出了问题呢?(个人认为该情况使用了SQLDATASOURCE应该不用再在GRIDVIEW的事件中写具体代码了吧)

...全文
221 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihuo 2008-12-09
  • 打赏
  • 举报
回复
我现在理解了:
在gridview绑定的数据源sqldatasource1中要写updateQuery
而gridview中的dropdownlist所绑定的sqldatasource2(也在gridview的编辑模板列中,和dropdownlist在一起)
是不用写任何事件的。要想把dropdownlist中变化的数据写入数据库还是要在girdview的rowdatabound和rowupdating事件中写
代码:
protected void gvAddDeviceSort_RowDataBound(object sender, GridViewRowEventArgs e)
{

if ((e.Row.RowState == DataControlRowState.Edit) || (e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit)))
{
System.Data.DataRowView drv = (System.Data.DataRowView)e.Row.DataItem;
DropDownList ddlChooseDepart = (DropDownList)e.Row.Cells[2].FindControl("gv_ddlChooseDepart");
ListItem li = ddlChooseDepart.Items.FindByValue(drv["edName"].ToString());
li.Selected = true;
}
}
----------------
protected void gvAddDeviceSort_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow gvr = this.gvAddDeviceSort.Rows[this.gvAddDeviceSort.EditIndex];
DropDownList ddlChooseDepart = (DropDownList)gvr.Cells[2].FindControl("gv_ddlChooseDepart");
e.NewValues["experimentDepartID"] = ddlChooseDepart.SelectedValue;
}

但是现在就是红色标记的地方我搞不太清楚哪里写错了。
还请大家帮忙结合我的数据库结构
主表experimentDepart,字段为:
experimentDepartID tinyint primary key--部门ID
edName varchar 15--部门名
从表deviceSort,字段为:
deviceSortId tinyint primary key--设备分类ID
deviceSortName varchar 30--设备分类名称
experimentDepartID tinyint foreignkey reference experimentDepart(experimentDepartID)--部门ID,设备属于何部门
以及SqlDataSource1的SelectQuery中语句为:
SELECT deviceSort.deviceSortId, deviceSort.deviceSortName, experimentDepart.edName
FROM deviceSort
INNER JOIN experimentDepart
ON deviceSort.experimentDepartID = experimentDepart.experimentDepartID//gridview显示设备分类ID,设备分类名称,隶属部门三个字段
看看,那俩个红色标记的地方如何写阿?
mengxj85 2008-12-09
  • 打赏
  • 举报
回复
用数据源控件不多,不是很清楚,如果用代码来绑定,自己动手写更新事件,是不会出现楼主的问题
nihuo 2008-12-09
  • 打赏
  • 举报
回复
再问,在sqldatasource1中的updateQuery里,在命令参数编辑器对话框中,三个参数源应该分别如何设置呢
nihuo 2008-12-09
  • 打赏
  • 举报
回复
请大家说的详细一点,只言片语的解决不了。
因为对使用数据源控件不熟悉,以前都是用自写代码来提供数据源的。
nihuo 2008-12-09
  • 打赏
  • 举报
回复
使用了数据源控件,如何重新绑定数据源?
而且我查看了数据库中的数值,都确实被改为“计算机部门”所对应的selectvalue值了。
sxu_nono 2008-12-09
  • 打赏
  • 举报
回复
可能的原因1:IsPostBack;
可能的原因2:Update完了之后没有DataBind
hjw01592 2008-12-09
  • 打赏
  • 举报
回复
你更新完了要重新绑定数据源啊
nihuo 2008-12-09
  • 打赏
  • 举报
回复
用了Sqldatasouce控件,我如果再在事件中写代码,那么必定需要在事件中为GRIDVIEW绑定数据代码,那么运行的时候系统会提示已经使用了SQLDATASOURCE不能同时又自行绑定数据,所以二楼说的好像不对。
三楼说的不知怎么判断。

好像不是这么回事
zoOoz 2008-12-09
  • 打赏
  • 举报
回复
判断是否IsPostBack,然后再处理.
MicroDeviser 2008-12-09
  • 打赏
  • 举报
回复
你要重写gridviw的updating事件,好像是这个吧,你搜一下gridview编辑更新

62,269

社区成员

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

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

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

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