新手提问,高分诱惑,GridView,模板列的问题

mahatma_cn 2008-07-11 01:49:37
GridView中包含很多列,其中几列为模板列,放置了DropDownList控件,下拉后变更选择项后提交服务器更新数据库中的相应记录指定字段

现在问题:
下拉DropDownList改变当前值后触发服务器代码,但是事件处理函数中我不知道如何通过sender找到需要更新哪条记录,即通过这个DropDownList所在的行找到相应的DataKey,再通过这个Key更新数据库表

谢谢
...全文
162 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
amandag 2008-07-13
  • 打赏
  • 举报
回复
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList drop = sender as DropDownList;
//找到行索引
int index = (drop.NamingContainer as GridViewRow).RowIndex;
//得到主键值,GridView要设置DataKeyNames属性
string id = GridView1.DataKeys[index].Value.ToString();
}
namhyuk 2008-07-13
  • 打赏
  • 举报
回复
,即通过这个DropDownList所在的行找到相应的DataKey,再通过这个Key更新数据库表
------------------------------------------------------------------------
硬编码更新很多情况下实在没必要。你就没有想过为什么GridView+DataSource控件,且允许编辑时,为什么一行代码不用写就能更新数据库吗?

JeffChung 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 amandag 的回复:]
C# codeprotected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList drop = sender as DropDownList;
//找到行索引
int index = (drop.NamingContainer as GridViewRow).RowIndex;
//得到主键值,GridView要设置DataKeyNames属性
string id = GridView1.DataKeys[index].Value.ToString();
}
[/Quote]
mengjun5200 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mahatma_cn 的回复:]
大哥,直接告诉我怎么做就Ok了,看片很累啊
[/Quote]
自己动手!!!你要别人喂你吃饭吗
xhan2000 2008-07-11
  • 打赏
  • 举报
回复
可以变通处理

例如设置每一行的dropdownlist的value为

主键ID_真实value

然后分析((DropDownList)sender).SelectValue就行了
XJQ_1 2008-07-11
  • 打赏
  • 举报
回复
大哥,你的项目跟我们做的项目不是一样的,原代码不一定有的.....
mahatma_cn 2008-07-11
  • 打赏
  • 举报
回复
大哥,直接告诉我怎么做就Ok了,看片很累啊
insus 2008-07-11
  • 打赏
  • 举报
回复
参考下面这个:

http://blog.csdn.net/insus/archive/2008/04/28/2336874.aspx

虽然是DataList与DropDownList例子,望只参考其中的方法!
XJQ_1 2008-07-11
  • 打赏
  • 举报
回复
<td style="border-color:#ffffff" align ="center" >
<div align="center">
<asp:LinkButton ID="lbtn_tijian" runat="server" CommandName="tijian" CommandArgument='<%#databinder.eval(container.dataitem,"id")&","&databinder.eval(container.dataitem,"a0")&","&databinder.eval(container.dataitem,"a1")%>'>作为体检</asp:LinkButton>
<asp:LinkButton ID="lbtn_suifang" runat="server" CommandName="suifang" CommandArgument='<%#databinder.eval(container.dataitem,"id")&","&databinder.eval(container.dataitem,"a0")&","&databinder.eval(container.dataitem,"a1")%>'>作为随访</asp:LinkButton>
</div>
</td>

Protected Sub rpt_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rpt.ItemCommand
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
'作为体检
If e.CommandName = "tijian" Then
Dim s As String() = e.CommandArgument.ToString().Split(",")
cmdstr = "select * from A where id='" + s(0).ToString() + "'"
con.Open()
Dim com As SqlCommand
com = New SqlCommand(cmdstr, con)
Dim reader As SqlDataReader
reader = com.ExecuteReader
end sub
希望能给你启发
mahatma_cn 2008-07-11
  • 打赏
  • 举报
回复
大家顶啊

62,074

社区成员

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

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

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

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