-

实例说明:

部门,与部门人员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即可。

转载于:https://www.cnblogs.com/jams742003/archive/2009/05/19/1459970.html

GridView类容器中的DropDownList联动相关推荐

  1. 【ASP.NET】第八课——GridView 控件的编辑功能优化,GridView控件中嵌套DropDownList控件

    知识点:掌握 GridView 的编辑.高亮显示的功能 .GridView控件中嵌套DropDownList控件获取数据源. [ASP.NET]第七课--数据绑定和 GridView 控件的使用 重点 ...

  2. GridView中DropDownList联动

    1.在GridView模板列中添加DropDownList并设置AutoPostback属性为true. 2.再在DropDownList的SelectedIndexChanged事件里写下面几句话. ...

  3. FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean

    前言: 数据库的字段比如:price:1 ,返回需要price:1元. 这时两种途径修改: ① 比如sql中修改或者是在实体类转json前遍历修改. ②返回json,序列化时候修改.用到的是fastj ...

  4. SpringBoot 之 普通类获取Spring容器中的bean

    SpringBoot 之 普通类获取Spring容器中的bean 转载于:https://www.cnblogs.com/lwmp/p/8892927.html

  5. Spring Boot中普通类获取Spring容器中的Bean

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,自己动手n ...

  6. SpringBoot中在普通类里面加载Spring容器中的类

    前言 在我们的工作中,经常会遇到需要在普通类中使用放在Spring容器中的类的情况.最常见的情况大概就是有一个类他的属性的是通过spring的配置文件读取的.这样这个类必然要交给Spring容器进行管 ...

  7. 【SpringBoot】在普通类中获取spring容器中的bean

    这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...

  8. 工具类:获取 spring 容器中 bean

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. package com.orange.utils;import org.springframewor ...

  9. spring@Autowired的对象为null,非容器中的类如何调用容器中的类

    1.问题描述 我们平时使用@Autowired注入对象时,一般被注入的类都带有@Coponent.@Controller.@Service .@repository等注解才可以.注入类和被注入类都被s ...

最新文章

  1. 用python计算2+4+6+…+20的值_计算2*3+(2*(5+6)*3)/2+4*6的值
  2. [九度][何海涛] 栈的压入压出
  3. java xssf的背景色,poi xssf背景颜色对照表 java生成excel文件
  4. 两个class写在同一个java文件中
  5. 题解P3942_将军令
  6. 删除以x为根节点的子树并释放☆
  7. python判断序列符号变化的次数
  8. SQL那些事儿(十三)--Oracle中varchar与varchar2区别
  9. 【图像重建】基于matlab GUI投影法图像重建【含Matlab源码 861期】
  10. 基于模拟退火算法解决TSP问题 | MATLAB源码
  11. Qt上位机 实现串口助手和网络助手
  12. Linux系列教程——Linux文件编辑、Linux用户管理
  13. JAVA实现杨辉三角的三种方式
  14. 快速获取网站媒体资源方法
  15. python批量图片合并
  16. 从零开始Kubernetes CronJob实现任务调度
  17. 区块链51%双花攻击
  18. 长隆大马戏机器人_长隆娱乐登陆
  19. selenium+cookie自动登录新浪微博(二)
  20. 《黄金瞳》 台词:你人真好!

热门文章

  1. Java中矩阵运算(math3的使用)
  2. ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set
  3. Photoshop CS6将多张图片合成GIF动态图或视频,并将其保存导出
  4. Ubuntu系统全盘备份与恢复,亲自总结,实测可靠
  5. Autodesk Revit DB Link 中文理解
  6. python获取系统参数_python 常用系统参数
  7. mysql 主从备份 全量数据_当主库存在历史数据时如何完成全量Mysql主从复制
  8. 服务器如何启动运行,如何在服务器系统启动或重新启动时执行命令或脚本
  9. html表格添加选项代码,使用实例演示 表单 中的选项卡功能 在里面添加table id=bootstrap-table/table后不显示表格...
  10. fastreport 横向分栏_FastReport开发指南