关于DetailsView使用DropDownList1!

关于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>

在插入(DetailsView1_ItemInserting)或更新(DetailsView1_ItemUpdating)事件中加入
代码:
     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中代码如下(省略数据源代码):

 1  < asp:DetailsView ID = " DetailsView1 "  DataKeyNames = " ClassID "
 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文件中:

1       protected   void  ddlParent_DataBinding( object  sender, EventArgs e)
2      {
3           // 添加数据绑定代码
4           // BindDropDownList((DropDownList)sender);
5      }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值