怎样设定gridview 的EditItemTemplate中dropdownlist的某一项被选定?

ding_ys 2008-07-28 08:50:28
怎样设定gridview 的EditItemTemplate中dropdownlist的某一项被选定?
<asp:TemplateField HeaderText="Department">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("department") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server" DataSource="<%# ddlDepartmentBind() %>" DataTextField="deptname" DataValueField="deptname" >
</asp:DropDownList>
</EditItemTemplate>
直接这样,每次点编辑的时候默认选定项都为第一项,如何才能重新设定它对应的默认选定项啊?
...全文
268 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
CHENGXB 2011-01-24
  • 打赏
  • 举报
回复
偶数行的问题是因为
if(e.Row.RowState == DataControlRowState.Edit)
这个判断有问题,e.Row.RowState 是DataControlRowState 值的按位组合,偶数行的状态是:DataControlRowState.Edit|DataControlRowState.Alternate
改成下面这个表达式来判断就可以了
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
wzm_wzm 2008-08-26
  • 打赏
  • 举报
回复
这么没有毅力啊,居然结贴了,不知解决了没有,我的解决方案:不设selectedvalue值,
在DropDownList的第一个位置上添加要作为selectedvalue的值就可以实现你的功能了
c#代码:
if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("ddlzc");
//ddl.SelectedValue = DataBinder.Eval(e.Row.DataItem, "zname").ToString();
string temp = DataBinder.Eval(e.Row.DataItem, "zname").ToString();
string sqlText = "select * from zhicheng";
OleDbConnection conn = getCon();
OleDbDataAdapter da = new OleDbDataAdapter(sqlText, conn);
DataSet ds = new DataSet();
conn.Open();
da.Fill(ds, "zhicheng");
//在0位置添加想要的值
ds.Tables[0].Rows.Add(new object[] { 0, temp });
DataView dv = ds.Tables[0].DefaultView;
//ViewState["docstr"] = ds.Tables[0].Rows[0]["dname"].ToString();
dv.Sort = "zid";
ddl.DataSource = dv;
ddl.DataValueField = "zid";
ddl.DataTextField = "zname";
ddl.DataBind();
conn.Close();
conn.Dispose();
}
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
在rowdatabound 中怎么不行啊?
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
我顶它个肺 ,为什么
SelectedValue='<%# Bind("department") %>'> 这样就可以完全实现。

而,在rowdatabound中
if(e.Row.RowState == DataControlRowState.Edit)
{
DropDownList drp = e.Row.FindControl("DropDownList2");
//
drp.SelectedValue = DataBinder.Eval(e.Row.DataItem, "department").ToString();
}
这样写就不行呢。rowdatabound事件只能对 奇数行记录有效吗? ??
yangpeiyu 2008-07-29
  • 打赏
  • 举报
回复


GridView1_RowDataBound:
if (((DropDownList)e.Row.FindControl("DDLXueli")) != null)
{
DropDownList ddlxueli = (DropDownList)e.Row.FindControl("DDLXueli");

// 生成 DropDownList 的值,绑定数据
string connStr = System.Configuration.ConfigurationSettings.AppSettings["lj"];
string SqlStr = "SELECT * from xueli";
DataSet ds = new DataSet();

SqlConnection conn = new SqlConnection(connStr);
if (conn.State.ToString() == "Closed") conn.Open();
SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);
da.Fill(ds, "xueli");
if (conn.State.ToString() == "Open") conn.Close();

ddlxueli.DataSource = ds.Tables[0].DefaultView;
ddlxueli.DataTextField = "description";
ddlxueli.DataValueField = "code";
ddlxueli.DataBind();
//

// 选中 DropDownList
ddlxueli.SelectedValue = ((HiddenField)e.Row.FindControl("HDFXueli")).Value;
//
}

页面:
<asp:TemplateField HeaderText="学历">
<ItemTemplate>
<%# Eval("description")%>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="HDFXueli" runat="server" Value='<%# Eval("xueli") %>' />
<asp:DropDownList ID="DDLXueli" runat="server" Width="90px" />
</EditItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>


ding_ys 2008-07-29
  • 打赏
  • 举报
回复
rowdatabound 难道只对奇数行记录有效吗?
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
rowdatabound 难道只对偶数行记录有效吗?
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yangpeiyu 的回复:]
rowdataBound 事件中
加上这句
drp.SelectedValue = ((Label)e.Row.FindControl("Label2")).Text;
[/Quote]

这样当然会报错哦。 DataControlRowState为 edit
yangpeiyu 2008-07-29
  • 打赏
  • 举报
回复
rowdataBound 事件中
加上这句
drp.SelectedValue = ((Label)e.Row.FindControl("Label2")).Text;
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
有人在吗? 问题出在哪里啊?
suyiming 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 amandag 的回复:]
<asp:TemplateField HeaderText="Department">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text=' <%# Eval("department") %>'> </asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server" DataSource=" <%# ddlDepartmentBind() %>" DataTextField="deptname" DataValueField="deptname" SelectedValue=' <%# Bind("deptname")…
[/Quote]
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
真的很奇怪哦!
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
好奇怪哦!
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
rowdataBound 事件中

if(e.Row.RowState == DataControlRowState.Edit){
DropDownList drp = e.Row.FindControl("DropDownList2");
//
drp.SelectedValue = DataBinder.Eval(e.Row.DataItem, "department").ToString();
}
为什么,偶数行记录就无效啊,默认选定项仍然为第一项目.?????????????????
lixueming3000 2008-07-29
  • 打赏
  • 举报
回复
DropDownList1.Items.FindByText(你要选中的值).selected=true
DropDownList1.Items.FindByvalue(你要选中的值).selected=true
上面各位说的都行,我这个也行,就看个人的习惯
guyan033 2008-07-29
  • 打赏
  • 举报
回复
SelectedValue=' <%# Bind("deptname") %>'
ding_ys 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Jinglecat 的回复:]
RowBound 事件中

if(e.Row.RowState == DataControlRowState.Edit){
DropDownList drp = e.Row.FindControl("DropDownList2");
//
drp.SelectedValue = DataBinder.Eval(e.Row.DataItem, "department").ToString();
}
[/Quote]

为什么偶数行记录不行啊?
amandag 2008-07-28
  • 打赏
  • 举报
回复
<asp:TemplateField HeaderText="Department">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text=' <%# Eval("department") %>'> </asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server" DataSource=" <%# ddlDepartmentBind() %>" DataTextField="deptname" DataValueField="deptname" SelectedValue='<%# Bind("deptname") %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
Jinglecat 2008-07-28
  • 打赏
  • 举报
回复
RowBound 事件中

if(e.Row.RowState == DataControlRowState.Edit){
DropDownList drp = e.Row.FindControl("DropDownList2");
//
drp.SelectedValue = DataBinder.Eval(e.Row.DataItem, "department").ToString();
}
ding_ys 2008-07-28
  • 打赏
  • 举报
回复
是啊。
加载更多回复(1)

62,046

社区成员

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

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

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

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