GridView类容器中的DropDownList联动

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: - 实例说明: 部门,与部门人员2个下拉框。 (1)前台码 部门: 人员:   (2)后台码 在DataRowBound事件中进行数据绑定  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)    {         if ((DropDownList)e.
-

实例说明:

部门,与部门人员2个下拉框。

(1)前台码

<EditItemTemplate>
部门:

<asp:DropDownList ID="ddlstdepartment" runat="server" OnTextChanged="ddlstdepart_TextChanged" AutoPostBack="True"></asp:DropDownList>
人员:

<asp:dropdownlist ID="ddlstperson" runat="server" AutoPostBack="True" OnTextChanged="ddlstperson_TextChanged"></asp:dropdownlist>

<!--这个literal用于指定编辑模式下默认值选定-->
<asp:Literal ID="luserid" runat="server" Text='<%# Eval("userid") %>' Visible="false"></asp:Literal>
</EditItemTemplate> 

(2)后台码

在DataRowBound事件中进行数据绑定 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
         if ((DropDownList)e.Row.FindControl("ddlstdepartment") != null)
        {
            Literal luserid = e.Row.FindControl("luserid") as Literal; //userid

            DropDownList ddlstdepartment = e.Row.FindControl("ddlstdepartment") as DropDownList;
            BindDepList(ddlstdepartment);//绑定部门
            ddlstdepartment.SelectedValue = myPerson.DepartmentId.ToString();//指定默认选定

            DropDownList ddlstperson = e.Row.FindControl("ddlstperson") as DropDownList;

            BindDepPersonList(ddlstperson, myPerson.DepartmentId);//绑定人员
            ddlstperson.SelectedValue = myPerson.UserId;//指定默认选定
        }
    }

指定部门下拉框为autopostback为true。并注册事件ddlstdepart_TextChanged

事件内容如下:

 

protected void ddlstdepart_TextChanged(object sender, EventArgs e)
    {
        DropDownList ddlstdepartment = (DropDownList)sender;
        GridViewRow gvr = (GridViewRow)ddlstdepartment.NamingContainer;
        DropDownList ddlstperson = (DropDownList)gvr.FindControl("ddlstperson");
        DataSet ds = new DataSet();
        ds = pp.ShowPersonDs(1, 100, BaseData.enums.eQuestDataType.data, Convert.ToInt32(ddlstdepartment.SelectedItem.Value));

        ddlstperson.DataValueField = "userid";
        ddlstperson.DataTextField = "username";

        ddlstperson.DataSource = ds.Tables[0].DefaultView;
        ddlstperson.DataBind();

        lhidingids.Text = ddlstperson.SelectedItem.Value;//=================(一个页面隐藏Literal,当然也可以用页面状态:ViewState)
    }

这个事件很重要,通过NamingContainer来找到同处于GridView中的两个下拉框(部门,人员),使其产生二级联动(选择部门,人员下拉框自动变化)。

其中注释==============这个部门,很重要。因为编辑模式下需要。

 

人员下拉框事件ddlstperson_TextChanged

 

protected void ddlstperson_TextChanged(object sender, EventArgs e)
    {
        DropDownList ddlstperson = (DropDownList)sender;

        lhidingids.Text = ddlstperson.SelectedItem.Value;//================很重要
    }

 (3)编辑模式

bound事件中指定的默认值,在编辑模式下,二级下拉框会出现不能选值的情况。意思是:部门下拉框选项变化,人员下拉框联动,但更新时,不能选定人员下拉框的值,而是默认值,所以不能更新,原因是:在编辑事件中,Bound事件依然执行,所以总是那个默认值。因此需要一个用于存放选定值的状态(ViewState,或带有状态的控件,这里我用Literal)

 

这样在编辑模式下,更新时,用lhidingids.Text即可。

 

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
1月前
|
安全 算法 Java
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
这篇文章讨论了Java集合类的线程安全性,列举了线程不安全的集合类(如HashSet、ArrayList、HashMap)和线程安全的集合类(如Vector、Hashtable),同时介绍了Java 5之后提供的java.util.concurrent包中的高效并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList。
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
|
1月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
103 3
|
1月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
19 2
|
1月前
|
数据采集 监控 Kubernetes
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
|
1月前
|
数据采集 Kubernetes Java
Job类日志采集问题之在日志中添加容器的元信息标签,如何操作
Job类日志采集问题之在日志中添加容器的元信息标签,如何操作
|
1月前
|
存储 Kubernetes 数据处理
Job类日志采集问题之为什么Job容器的日志采集要考虑容器发现速度和开始采集延时,如何理解
Job类日志采集问题之为什么Job容器的日志采集要考虑容器发现速度和开始采集延时,如何理解
|
1月前
|
C++ 容器
C++中自定义结构体或类作为关联容器的键
C++中自定义结构体或类作为关联容器的键
32 0
|
4月前
|
小程序 前端开发 定位技术
微信小程序-常用的视图容器类组件
该内容是关于微信小程序组件的分类和部分具体组件的介绍。主要分为9大类:视图容器、基础内容、表单组件、导航组件、媒体组件、地图组件、画布组件、开放能力和无障碍访问。其中详细讲解了`view`、`scroll-view`、`swiper`及`swiper-item`等组件的用途和示例。`view`用于构建页面布局,`scroll-view`支持滚动效果,`swiper`则用于创建轮播图。此外,还提到了`root-portal`、`page-container`等其他特殊用途的组件。
52 0
|
4月前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
39 0
|
4月前
|
存储 安全 算法
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
288 1