首页
技术库|站长工具|技术手册|字体库|知识点词汇表| 联系我们|
打开本页的html静态页面
 

主菜单

文章分类

.: .Net技术 .: C#教程 .: asp.net中实现DetailsView控件下的两个DropDownList级连变动

  • 全文内容
  • 发表评论
  • 文章点评
  • 文章附件
  • Email文章
  • 打印文章

asp.net中实现DetailsView控件下的两个DropDownList级连变动

点击次数:1244 创建日期:12-4-2007 录入:cn-web.com 字体:[ ] 点评:


asp.net中实现DetailsView控件下的两个DropDownList级连变动

 
做项目中,一直在用DetailsView控件在显示数据库表的详细数据,今天遇到了这种情况,用DetailsView显示数据时,如果单击编辑,需要显示乡和村这两个下拉列表,单击乡时,村需要与之对应。
 
解决思路:
在DetailsView控件中分别为乡和村增加两个模板列,在两个模板列的EditItemTemplate下均增加两个控件,分别为HiddenField和DropDownList,HiddenField用来记录当前数据库中乡(或者村)的编号,DropDownList用来显示乡(或者村)的数据,这个数据需要在用户单击编辑时根据用户所编辑的信息来动态绑定的,所以这个代码应当写到DetailsView控件里的ModeChanging事件里,乡和村的级连很简单,和在页中实现的原理一样,将乡的DropDownList控件的属性AutoPostBack设置为true,增加OnSelectedIndexChanged事件就可以了。
 
部分代码:
DetailsView:
<asp:TemplateField HeaderText="乡名">
                                            <EditItemTemplate><asp:HiddenField ID="HDXiang" runat="server" Value='<%#Bind("乡名")  %>' /><asp:DropDownList ID="DDXiangz" runat="server" Width="90px"  AutoPostBack="true" OnSelectedIndexChanged="ddlXiang_SelectedIndexChanged"/></EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label ID="Label1" runat="server" Text='<%#getXiangName(Eval("乡名").ToString()) %>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="村名">
                                           <EditItemTemplate><asp:HiddenField ID="HDCun" runat="server" Value='<%#Bind("村名")  %>' /><asp:DropDownList ID="DDlCun" runat="server" Width="90px" /></EditItemTemplate>
                                            <ItemTemplate>
                                                <asp:Label ID="Label2" runat="server" Text='<%#  getCunName(Eval("村名").ToString())%>'></asp:Label>
                                            </ItemTemplate>
                                        </asp:TemplateField>
 
ModeChanging事件:
  if (e.NewMode == DetailsViewMode.Edit)
        {
            //绑定乡,从DetailsView控件中寻找,我的DropDownList乡在第三行
            DropDownList DDXiang = (DropDownList)this.DetailsView1.Rows[2].Cells[1].Controls[0].FindControl("DDXiangz");
            DDXiang.DataSource = 您的数据源;
            DDXiang.DataTextField = "乡名";
            DDXiang.DataValueField = "编号";
            DDXiang.DataBind();
            //  选中乡的 DropDownList
            DDXiang.SelectedValue = ((HiddenField)this.DetailsView1.Rows[2].Cells[1].FindControl("HDXiang")).Value;

            //绑定村,从DetailsView控件中寻找,我的DropDownList村在第四行
            DropDownList DDCun = (DropDownList)this.DetailsView1.Rows[3].Cells[1].Controls[0].FindControl("DDlCun");
            DDCun.DataSource = 您的数据源;
            DDCun.DataTextField = "村名";
            DDCun.DataValueField = "编号";
            DDCun.DataBind();
            //  选中村的 DropDownList
            DDCun.SelectedValue = ((HiddenField)this.DetailsView1.Rows[3].Cells[1].FindControl("HDCun")).Value;
        }
 
/// <summary>
    /// 编辑时村随着乡变化
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void ddlXiang_SelectedIndexChanged(object sender, EventArgs e)
    {
        //绑定村
        DropDownList DDCun = (DropDownList)this.DetailsView1.Rows[4].Cells[1].Controls[0].FindControl("DDlCun");
        DropDownList DDXiang = (DropDownList)this.DetailsView1.Rows[3].Cells[1].Controls[0].FindControl("DDXiangz");
        DDCun.DataSource = mycom您的数据源;
        DDCun.DataTextField = "村名";
        DDCun.DataValueField = "编号";
        DDCun.DataBind();
    }
 
效果图:
 
 
 
 
OK,此文章完毕。如有疑问,请加入本站技术群一起探讨。

www.cn-web.com(老韩)

请文明参与讨论,禁止漫骂攻击。
评论总数:1 [ 查看全部 ] 网友评论
cn-web网友:于12-12-2007评论道:
不错
(+5分)
(+4分)
(+3分)
(+2分)
(+1分)
此内容无附件
网站地图 - 知识词汇 - 全文检索 - 广告服务 - 帮助中心 - 联系我们
.:www.cn-web.com
网站技术开发联盟之WEB开发技术知识库
联系人:老韩(QQ:5679551)
晋ICP备07003487号