GridView编辑行相关问题

ChargeForward 2009-03-27 08:57:32
页面有一个GV,结构如下:
考号 | 姓名 | 班级 | 类型 | 分数 | 编辑 | 删除
--------------------------------------------------
001 小明 1班 小学生 65 编辑 删除此行
002 小华 5班 初中生 75 编辑 删除此行
003 小刚 7班 高中生 85 编辑 删除此行

数据是从数据库绑定的 最后两行是COMMAND列 前面全是BOUND列
我现在想实现的效果是 当我点击编辑之后 类型那一列呈现的不是textbox 而是一个下拉菜单 例如DropDownList
下拉条中显示可选择的类型 然后更新的时候 将选择的ITEM更新上去 这种效果怎么实现?
如果类型这一列改用模板列 那绑定数据的时候怎么办 非编辑状态呈现的样式能和其他列一样吗?
...全文
1295 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaoyang1990 2011-12-05
  • 打赏
  • 举报
回复
谢谢个个高手的分享
lovezx1028 2009-03-27
  • 打赏
  • 举报
回复
ding ding...
ChargeForward 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liuyeede 的回复:]
在 <EditTemplete>模板中将类型那一列设为DropDownList就可以了。

[/Quote]

但是 我绑定数据的时候 模板列怎么绑定数据表中的特定字段? 还有 非编辑状态 要和asp:BoundField一摸一样才行 编辑状态才变成Dropdownlist
liuyeede 2009-03-27
  • 打赏
  • 举报
回复
在<EditTemplete>模板中将类型那一列设为DropDownList就可以了。
dl_wang 2009-03-27
  • 打赏
  • 举报
回复
mark
walkghost 2009-03-27
  • 打赏
  • 举报
回复
模板列。
conanhhy 2009-03-27
  • 打赏
  • 举报
回复
其实在GridView中使用模板列:
<EditTemplate></EditTemplate>使用DropDownList
需要绑定DropDownList的值,可以在GridView的数据绑定事件GridView_RowDataBound里写,会对每一行的DropDownList数据绑定
pt1314917 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 ChargeForward 的帖子:]
页面有一个GV,结构如下:
考号 |  姓名 | 班级 |  类型 | 分数  | 编辑 |  删除
--------------------------------------------------
001    小明    1班    小学生  65      编辑  删除此行
002    小华    5班    初中生  75      编辑  删除此行
003    小刚    7班    高中生  85      编辑  删除此行

数据是从数据库绑定的  最后两行是COMMAND列  前面全是BOUND列
我现在想实现的效果是  当我点击编辑之后  类…
[/Quote]

这样需要将类型列由boundfield改成模版列。如:
<asp:TemplateField>
<HeaderTemplate>
类型
</HeaderTemplate>
<ItemTemplate>
<%#Eval("类型") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlInfo" runat="server">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>

然后在GridView的RowDataBound事件中,绑定下拉框。如下:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

//如果为编辑情况下时,绑定下拉框控件。
DropDownList ddlinfo = (DropDownList)e.Row.FindControl("ddlInfo");
if (ddlinfo != null)
{
ddlinfo.DataSource = bsi.SelectAll(); //绑定数据源的方法
ddlinfo.DataTextField = "score";
ddlinfo.DataValueField = "id";
ddlinfo.DataBind();
//选定为默认值
ddlinfo.SelectedValue ="";//这里是你的默认值
}
}
xslqingfeng 2009-03-27
  • 打赏
  • 举报
回复
學習....
insus 2009-03-27
  • 打赏
  • 举报
回复
请参考这个:
http://blog.csdn.net/insus/archive/2008/03/26/2221260.aspx

如果还看不明白,请再参考这个:
http://www.cnblogs.com/insus/articles/1411016.html

如果还是不懂,请联系Insus.NET。
cwmwss 2009-03-27
  • 打赏
  • 举报
回复
DDL在gridviewrowdatabound时绑定数据。
在编辑事件里,用textbox的值赋给DDL的selectvalue
a6252224 2009-03-27
  • 打赏
  • 举报
回复
原来有事例的
Teng_s2000 2009-03-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
cwmwss 2009-03-27
  • 打赏
  • 举报
回复
那一列用模板列,放着一个texbox和dropdownlist,初始的时候TB显示,DDL隐藏,编辑的时候TB隐藏,DDL显示,编辑完TB显示,DDL隐藏。
Teng_s2000 2009-03-27
  • 打赏
  • 举报
回复
搜一下 Gridview+DropdownList
takako_mu 2009-03-27
  • 打赏
  • 举报
回复
編輯前就是直接撈數據,無需爭議。
編輯時
 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

在此事件中你給模板列中的Dropdownlist綁定

DropDownList ddl3 = (DropDownList)GridView1.Rows[e.NewEditIndex].Cells[2].FindControl("DropDownList3");
Label lb6 = (Label)GridView1.Rows[e.NewEditIndex].Cells[5].FindControl("Label6");
DataSet ds2 = new DataSet();
ds2 = func.DropDownList_TypeBind(1, "itemName");
dc.Dropdownlist_Bind(ddl3, ds2, 0, 0, 1);
ddl3.SelectedValue = lb6.Text.Trim();
GridView1.EditIndex = -1;
BindGridView();

就OK了。

dcren118 2009-03-27
  • 打赏
  • 举报
回复
这个CSDN里面的例子好象就有把 ,
hecong875 2009-03-27
  • 打赏
  • 举报
回复
1.先把DropDownList所在的列转换成TemplateField(模板列)
2.在GridView里添加三个事件OnRowEditing,OnRowCancelingEdit,OnRowUpdating
再在事件上写上相应的代码

代码片段:
ASPX文件:
<asp:GridView ID="gvRequestRoleList" runat="server" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" AllowPaging="True" OnPageIndexChanging="gvRequestRoleList_PageIndexChanging"
OnRowEditing="gvRequestRoleList_RowEditing" OnRowCancelingEdit="gvRequestRoleList_RowCancelingEdit"
OnRowUpdating="gvRequestRoleList_RowUpdating">
.......
<asp:TemplateField HeaderText="申请权限">
<EditItemTemplate>
<asp:DropDownList ID="ddlRequestRole" runat="server">
<asp:ListItem Value="Common">普通用户</asp:ListItem>
<asp:ListItem Value="Intermediate">中级用户</asp:ListItem>
<asp:ListItem Value="Senior">高级用户</asp:ListItem>
<asp:ListItem Value="Admin">超级用户</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("RequestRoleCHName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
.......
</asp:GridView>

CS文件:
//用户按"修改权限"(更新)时
protected void gvRequestRoleList_RowEditing(object sender, GridViewEditEventArgs e)
{
gvRequestRoleList.EditIndex = e.NewEditIndex;
//绑定数据
RequestRoleListDataBind();
}

//用户取消操作时
protected void gvRequestRoleList_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvRequestRoleList.EditIndex = -1;
//绑定数据
RequestRoleListDataBind();
}

//更新操作
protected void gvRequestRoleList_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//获得DropDownList 控件
DropDownList ddlRequestRole = gvRequestRoleList.Rows[e.RowIndex].Cells[5].FindControl("ddlRequestRole") as DropDownList;
string roleName = ddlRequestRole.SelectedItem.Value;
Label lblUserName = gvRequestRoleList.Rows[e.RowIndex].Cells[2].FindControl("lblUserName") as Label;
string userName = lblUserName.Text;

//更新用户的角色
ChangeRole(userName, roleName);

//审核用户的申请
//....(略)

//刷新页面
//....(略)

}

62,041

社区成员

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

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

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

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