关于DetailsView使用DropDownList1
在DetailsView中创建一个模板列,在模板列中加入DropDownList
例:
<asp:TemplateField HeaderText="类型">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList2" runat="server">
<asp:ListItem>0</asp:ListItem>
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>00</asp:ListItem>
<asp:ListItem>11</asp:ListItem>
<asp:ListItem>22</asp:ListItem>
<asp:ListItem>33</asp:ListItem>
</asp:DropDownList>
</InsertItemTemplate>
</asp:TemplateField>
代码:
string str=((DropDownList)DetailsView1.Rows[3].Cells[1].FindControl("DropDownList1")).SelectedValue
e.Values.Add("type", str);
OK,就这样就可以使用DropDownList 或其它控件了.
========================================================================
作者: Alwin 转贴请注明作者和出处
决绝的思路是在模版列中增加一个Label的控件,绑定数据源中的字段值, 在创建DropDownList控件的时候
加载DropDownList的值,同时从Label控件中获取绑定的值,设置到DropDownList中, 这样就实现了
DropDownList的显示问题。 其实现的代码如下:
protected void dvwColumns_PreRender(object sender, EventArgs e)
{
if (IsPostBack)
{
if (dvwColumns.CurrentMode == DetailsViewMode.Edit)
{
DropDownList ddlDataType = (DropDownList)dvwColumns.FindControl("ddlDataType");
Label labDataType = (Label)dvwColumns.FindControl("labDataType");
ddlDataType.DataSource = deType;
ddlDataType.DataBind();
ddlDataType.SelectedValue = labDataType.Text;
}
else if (dvwColumns.CurrentMode == DetailsViewMode.Insert)
{
DropDownList ddlDataType = (DropDownList)dvwColumns.FindControl("ddlDataType");
ddlDataType1.DataSource = deType;
ddlDataType1.DataBind();
ddlDataType.SelectedValue = "VARCHAR2";
}
}
=====================================================
今 天在做项目时用到了DetailsView控件,在EditItemTemplate中需要自己初始一个DropDownList的数据。我曾尝试在 DetailsView控件的ModeChanging或ModeChanged事件中使用FindControl方法来获取目标控件的访问,但是都失败 了。
我是利用DropDownList_DataBinding事件来解决,给在DetailsView控件TemplateField中的DropDownList加上onDataBinding事件命令。然后在cs中处理这个事件就OK了。
DetailsView的aspx中代码如下(省略数据源代码):
2 runat = " server " DataSourceID = " SqlDataSource1 " AutoGenerateRows = " False " >
3 < Fields >
4 < asp:BoundField HeaderText = " 分类名称 " DataField = " ClassTitle " />
5 < asp:TemplateField HeaderText = " 所属分类 " >
6 < ItemTemplate >
7 <% #Eval( " ParentTitle " ) %>
8 </ ItemTemplate >
9 < EditItemTemplate >
10 < asp:DropDownList ID = " ddlParent " runat = " server " onDataBinding = " ddlParent_DataBinding " >
11 </ asp:DropDownList >
12 </ EditItemTemplate >
13 </ asp:TemplateField >
14 < asp:CommandField ShowEditButton = " True " />
15 </ Fields >
16 </ asp:DetailsView >
.cs文件中:
2 {
3 // 添加数据绑定代码
4 // BindDropDownList((DropDownList)sender);
5 }