如何在datagrid中使其中一列变成下拉框!

jxlucy 2005-12-07 10:30:36
在datagrid中有一列“单位名称”,打算把它做成下拉框,为了方便新增记录时省去手动输入单位名称的麻烦。请问该如何做,对了单位名称这个字段来自于数据库的另一个表!请知道的兄弟帮帮忙,我知道大概要做的一些事情,但是感觉真正做起来没法下手的感觉。我现在最想知道的是详细的步骤。非常感谢!
...全文
266 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxlucy 2005-12-08
  • 打赏
  • 举报
回复
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
If e.Item.ItemType = ListItemType.EditItem Then
Dim List As New DropDownList
List = CType(e.Item.FindControl("DropDownList1"), DropDownList)
List.DataSource = Dszgbm1
List.DataTextField = "单位"
List.DataValueField = "单位"
List.DataBind()
List.SelectedValue = DataBinder.Eval(e.Item.DataItem, "单位").ToString
End If
End Sub


“单位”为绑定到datagrid的表的一列名。
现在当点击一条记录的“编辑”按钮时,出现的单位名称是正确的,不再是手动输入的单位列表的第一个。但是新的问题出现了:下拉框中出现了N条数据(N=datagrid中的记录数),当然其中有很多重复的,下拉框中出现的不再是手动输入的数据,大家看看DataGrid1_ItemDataBound中的代码到底该如何写?非常感谢!
nimeide1234567890 2005-12-08
  • 打赏
  • 举报
回复
?
xiaostar007 2005-12-08
  • 打赏
  • 举报
回复
mark,不错
cnjack 2005-12-08
  • 打赏
  • 举报
回复
http://singlepine.cnblogs.com/articles/266538.html
zeusvenus 2005-12-07
  • 打赏
  • 举报
回复
参考msdn关于datagrid模板列的介绍即可。
iuhxq 2005-12-07
  • 打赏
  • 举报
回复
建议你搜索或者参考一下教程,这个是非常常见的问题
working1997 2005-12-07
  • 打赏
  • 举报
回复
1、先使用模板列来进行数据的绑定

2、然后在你的增加事件中加入代码,类似以下

Dim ddlComp As DropDownList = CType(DataGrid1.Items(DataGrid1.EditItemIndex).Cells(3).Controls(1), DropDownList)

然后查询数据,为ddlComp进行数据绑定
singlepine 2005-12-07
  • 打赏
  • 举报
回复
http://singlepine.cnblogs.com/articles/266538.html
swordragon 2005-12-07
  • 打赏
  • 举报
回复
使用模板列:
<asp:templatecolumn>
<itemtemplate>
<asp:dropdownlist id="DropdownlistX" runat="server"></asp:dropdownlist>
</itemtemplate>
</asp:templatecolumn>
hui1202 2005-12-07
  • 打赏
  • 举报
回复
首先使用摸版列添加dropdownlist控件,然后不管你是动态生成也好,自己添加项也好那是你的问题了,来自另外一个表也好办,用SQL语句查询出来后,放到DATASET里,然后绑定到datagrid里就行了,实现事件的话自己写吧!
baobei7758 2005-12-07
  • 打赏
  • 举报
回复
模板列
c_delight 2005-12-07
  • 打赏
  • 举报
回复
用模板列,将这一列设置成模板列
再编辑模板列,加入DropDownlist
jxlucy 2005-12-07
  • 打赏
  • 举报
回复
由于这个东西催的急,所以我用手动的办法做了
<EditItemTemplate>
<asp:DropDownList id="DropDownList2" runat="server" Width="172px">
<asp:ListItem Value="离退办">离退办</asp:ListItem>
<asp:ListItem Value="居委会">居委会</asp:ListItem>
<asp:ListItem Value="组织部">组织部</asp:ListItem>
<asp:ListItem Value="宣传部">宣传部</asp:ListItem>
<asp:ListItem Value="纪检审计">纪检审计</asp:ListItem>
<asp:ListItem Value="团委">团委</asp:ListItem>
<asp:ListItem Value="工会">工会</asp:ListItem>
<asp:ListItem Value="技安办">技安办</asp:ListItem>
<asp:ListItem Value="保卫处">保卫处</asp:ListItem>
<asp:ListItem Value="党政办">党政办</asp:ListItem>
<asp:ListItem Value="科技委">科技委</asp:ListItem>
<asp:ListItem Value="人教处">人教处</asp:ListItem>
<asp:ListItem Value="财务处">财务处</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>

这样,下拉框正常的出现了以上列的单位名
可是,一个新问题又产生了,点击一条记录的"编辑"按钮,发现"单位"那列的内容都是单位名中的第一个"离退办",正常情况下,应该还是原来的内容才对,如何解决这个问题啊?谢谢!
jxlucy 2005-12-07
  • 打赏
  • 举报
回复
现在问题有两个:
一是下拉框的东西怎么显示出来,也就是说下拉框怎么去取数据库表dwk中的字段"单位名称"的所有值!
二是当我们对datagrid中任何一条记录进行编辑或添加一条新记录时,要能够将下拉框中选择的内容保存!
jxlucy 2005-12-07
  • 打赏
  • 举报
回复
非常感谢这么多人热心的解答,可是我也被搞糊涂了!
我希望哪位能给我个详细的代码,以及比较详细一点的步骤!
ChengKing 2005-12-07
  • 打赏
  • 举报
回复
参考:

1.*.aspx文件
<ItemTemplate>
<asp:Label id=Label2 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.状态") %>'>
</asp:Label>
</ItemTemplate>
<EditItemTemplate> <asp:DropDownList id="DropDownList1" runat="server" Width="78px" SelectedIndex='<%# GetStatusIndex(DataBinder.Eval(Container,"DataItem.状态").ToString())%>'>
<asp:ListItem Value="未完成">未完成</asp:ListItem>
<asp:ListItem Value="完成">完成</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
2. *.cs文件代码(一般只有这个事件中用到取值)
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DropDownList dpdAreas=(DropDownList)e.Item.FindControl("DropDownList1");
this.dpdAreas.DataTextField = "AreaName";
this.dpdAreas.DataValueField = "AreaID";
this.dpdAreas.DataSource = DS;
this.dpdAreas.DataBind();
}
aysun168 2005-12-07
  • 打赏
  • 举报
回复
你有Msn吗?我传一个给你,这里面不能上传附件!
我的MSN:ay68@msn.com,希望和web开发的交朋友!
ye_zi 2005-12-07
  • 打赏
  • 举报
回复
http://singlepine.cnblogs.com/articles/266538.html
这个参考不错
jacky125 2005-12-07
  • 打赏
  • 举报
回复
还需要:Grid_ItemDataBound (VB.Net),你参考一下

Private Sub MemberGrid_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles MemberGrid.ItemDataBound
If e.Item.ItemType = ListItemType.EditItem Then
Dim LevelList As New DropDownList
LevelList = CType(e.Item.FindControl("LevelList"), DropDownList)
LevelList.DataSource = Club.ShowManaList()
LevelList.DataTextField = "Level"
LevelList.DataValueField = "LevelID"
LevelList.DataBind()
LevelList.SelectedValue = DataBinder.Eval(e.Item.DataItem, "LevelID").ToString
End If
End Sub
jacky125 2005-12-07
  • 打赏
  • 举报
回复
以前我也遇到这样的困难,你参考一下我以前的帖子
http://topic.csdn.net/TopicFiles/2005/04/30/08/3977416.xml
加载更多回复(8)

62,075

社区成员

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

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

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

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