怎样设定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>
直接这样,每次点编辑的时候默认选定项都为第一项,如何才能重新设定它对应的默认选定项啊?
<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>
直接这样,每次点编辑的时候默认选定项都为第一项,如何才能重新设定它对应的默认选定项啊?
解决方案 »
- vs2008做的网站发布后,浏览网页时出错
- 微信公众平台开放消息接口设置的问题
- EXCEL导入数据库问题?
- 如何实现gridview点编辑时无刷新弹窗
- 弱弱的问句IsCrossPagePostBack的问题
- 请问MCAD和MCSD认证有没有中文考试??
- 一个简单的问题
- 求只能输入6位到10位的阿拉伯数字的正则式?
- 请教template里面edititem的问题:
- 关于数据库更新的问题(急,马上散分!)
- assignment、call、increment、decrement 和 new 对象表达式可用作语句
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)
<asp:DropDownList SelectedValue='<%# Bind("departmentId") %>' ... >
DropDownList drp = e.Row.FindControl("DropDownList2");
//
drp.SelectedValue = DataBinder.Eval(e.Row.DataItem, "department").ToString();
}
<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>
DropDownList1.Items.FindByvalue(你要选中的值).selected=true
上面各位说的都行,我这个也行,就看个人的习惯
DropDownList drp = e.Row.FindControl("DropDownList2");
//
drp.SelectedValue = DataBinder.Eval(e.Row.DataItem, "department").ToString();
}
为什么,偶数行记录就无效啊,默认选定项仍然为第一项目.?????????????????
加上这句
drp.SelectedValue = ((Label)e.Row.FindControl("Label2")).Text;
这样当然会报错哦。 DataControlRowState为 edit
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>
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事件只能对 奇数行记录有效吗? ??
在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();
}
if(e.Row.RowState == DataControlRowState.Edit)
这个判断有问题,e.Row.RowState 是DataControlRowState 值的按位组合,偶数行的状态是:DataControlRowState.Edit|DataControlRowState.Alternate
改成下面这个表达式来判断就可以了
if ((e.Row.RowState & DataControlRowState.Edit) > 0)