++++还是GridView中添加Droplist的问题++++

gaoweipeng7851 2008-11-25 09:16:09
gridview中的代码:
<asp:GridView ID="GVUserPower" runat="server" Width="100%" style="text-align: center" AutoGenerateColumns="False" DataKeyNames="用户名" OnRowCancelingEdit="GVUserPower_RowCancelingEdit" OnRowDataBound="GVUserPower_RowDataBound" OnRowDeleting="GVUserPower_RowDeleting" OnRowEditing="GVUserPower_RowEditing" OnRowUpdating="GVUserPower_RowUpdating">
<Columns>
<asp:BoundField DataField="用户名" HeaderText="用户名" ReadOnly="True" />
<asp:BoundField DataField="用户密码" HeaderText="用户密码" ReadOnly="True" />
<asp:TemplateField HeaderText="管理权限">
<EditItemTemplate>
<asp:DropDownList ID="DLManage" runat="server" Width="60px">
<asp:ListItem>有</asp:ListItem>
<asp:ListItem>无</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblManage" runat="server" Text='<%# Bind("管理权限") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
我添加的droplist的数据不是数据绑定的,是自己手动添加进去的。
想实现在编辑状态下,droplist中的值保持原有的值。
protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{
string UserName = e.Row.Cells[0].Text;
string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'";

DataSet ds = opls.GetTable(sql, "权限表");
string manage=ds.Tables[0].Rows[0]["管理权限"].ToString();
Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage");
lblManage.Text = manage;
DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage");
//dlist1.SelectedIndex = dlist1.Items.IndexOf(dlist1.Items.FindByText(lblManage.Text));
dlist1.DataSource = ds;
dlist1.DataTextField = "管理权限";
dlist1.DataValueField = "管理权限";
dlist1.DataBind();
}
}
如果这样的话,编辑的时候是能保存原有的值,但是droplist中只有绑定的一个值,没法进行修改
请问高手怎么解决,droplist中的值尽量不要绑定
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
evan311314 2010-04-25
  • 打赏
  • 举报
回复
_RowEditing
QQ306832666 2008-11-25
  • 打赏
  • 举报
回复
可以把DropDownList 的绑定放入当页面第一次加载里
就是 if (!IsPostBack)
{
.......

}
criedshy 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gaoweipeng 的回复:]
引用 3 楼 criedshy 的回复:
C# codeprotected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{
string UserName = e.Row.Cells[0].Text;
string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'";

DataSet ds = opls…
[/Quote]

protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e) 
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{
string UserName = e.Row.Cells[0].Text;
string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'";

DataSet ds = opls.GetTable(sql, "权限表");
string manage=ds.Tables[0].Rows[0]["管理权限"].ToString();
DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage");
dlist1.Items.FindByText(manage).Selected=true;
}
}


把给label赋值的去掉, 编辑状态是找不到label的
icerain911 2008-11-25
  • 打赏
  • 举报
回复
关注!!
gaoweipeng7851 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 criedshy 的回复:]
C# codeprotected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{
string UserName = e.Row.Cells[0].Text;
string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'";

DataSet ds = opls.GetTable(sql, "权限表");

[/Quote]
还是会报错, lblManage.Text = manage;
未将对象引用设置到对象的实例。
以前我也是这么弄的,就报着个错
高手帮忙
criedshy 2008-11-25
  • 打赏
  • 举报
回复
protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e) 
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{
string UserName = e.Row.Cells[0].Text;
string sql = "select 管理权限 from 权限表 where 用户名='"+UserName+"'";

DataSet ds = opls.GetTable(sql, "权限表");
string manage=ds.Tables[0].Rows[0]["管理权限"].ToString();
Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage");
lblManage.Text = manage;
DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage");
dlist1.Items.FindByText(manage).Selected=true;
}
}
gaoweipeng7851 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 criedshy 的回复:]
C# codeprotected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{

Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage");
DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage");
dlist1 .Items.Fi…
[/Quote]
会报错啊!dlist1.Items.FindByText(lblManage.Text).Selected = true;
未将对象引用设置到对象的实例。
高手帮忙
criedshy 2008-11-25
  • 打赏
  • 举报
回复
protected void GVUserPower_RowDataBound(object sender, GridViewRowEventArgs e) 
{
if (e.Row.RowState.ToString().IndexOf("Edit") >= 0)//如果处于编辑状态
{

Label lblManage = (Label)e.Row.Cells[2].FindControl("lblManage");
DropDownList dlist1 = (DropDownList)e.Row.Cells[2].FindControl("DLManage");
dlist1 .Items.FindByText(lblManage.Text).Selected=true;
}
}
surewy 2008-11-25
  • 打赏
  • 举报
回复
mark

62,041

社区成员

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

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

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

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