1.前台

  1. <span id="spnClient" style="margin-left: 30px; margin-top: 10px">
  2. <lable>Client: </lable>
  3. <asp:DropDownList ID="ddlClient" DataValueField="ID" DataTextField="NAME" runat="server" />
  4. </span>
  5.  
  6. <span id="spnProject" style="margin-left: 30px; margin-top: 10px">
  7. <lable>Project: </lable>
  8. <asp:DropDownList ID="ddlProject" DataValueField="ID" DataTextField="NAME" runat="server" />
  9. </span>
  10. <span id="spnUser" style="display: none; margin-left: 30px; margin-top: 10px;">
  11. <lable>User: </lable>
  12. <asp:DropDownList ID="ddlUser" DataValueField="ID" DataTextField="USER_NAME" runat="server" />
  13. </span>

2.绑定DataSource

  1. private void LoadDropDownList()
  2. {
  3. DataTable dtYear =SplendidCache.Years();
  4. ddlYEAR.DataSource = dtYear;
  5. ddlYEAR.DataBind();
  6. ddlYEAR.SelectedValue = DateTime.Now.Year.ToString();
  7.  
  8. DataTable dtClient = SplendidCache.Client(true);
  9. ddlClient.DataSource = dtClient;
  10. ddlClient.DataBind();
  11.  
  12. DataTable dtProject = SplendidCache.Project();
  13. ddlProject.DataSource = dtProject;
  14. ddlProject.DataBind();
  15.  
  16. DataTable dtUser = SplendidCache.AssignedUser();
  17. ddlUser.DataSource = dtUser;
  18. ddlUser.DataBind();
  19.  
  20. BindProjects();
  21. BindUsers();
  22. }
  1. private void BindProjects()
  2. {
  3. DataTable dtProjects = new DataTable();
  4. DbProviderFactory dbf = DbProviderFactories.GetFactory();
  5. using (IDbConnection con = dbf.CreateConnection())
  6. {
  7. con.Open();
  8. using (IDbCommand cmd = con.CreateCommand())
  9. {
  10. string sSQL = "SELECT ID,NAME,CLIENTID FROM Project WHERE DELETED=0 ORDER BY NAME " + ControlChars.CrLf;
  11. cmd.CommandText = sSQL;
  12. using (DbDataAdapter da = dbf.CreateDataAdapter())
  13. {
  14. ((IDbDataAdapter)da).SelectCommand = cmd;
  15. da.Fill(dtProjects);
  16. StringBuilder sbProjects = new StringBuilder();
  17. if (dtProjects != null && dtProjects.Rows.Count > )
  18. {
  19. sbProjects.Append("{\"project\":[");
  20. int i = ;
  21. int count = dtProjects.Rows.Count;
  22. foreach (DataRow row in dtProjects.Rows)
  23. {
  24. if (i == count)
  25. {
  26. sbProjects.Append("{\"client\":\"" + Sql.ToString(row["CLIENTID"]) + "\",\"id\":\"" + Sql.ToString(row["ID"]) + "\",\"name\":\"" + Sql.ToString(row["NAME"]).Replace("'","‘") + "\"}");
  27. }
  28. else
  29. {
  30. sbProjects.Append("{\"client\":\"" + Sql.ToString(row["CLIENTID"]) + "\",\"id\":\"" + Sql.ToString(row["ID"]) + "\",\"name\":\"" + Sql.ToString(row["NAME"]).Replace("'", "‘") + "\"},");
  31. }
  32. i++;
  33. }
  34. sbProjects.Append("]");
  35. }
  36. sbProjects.Append("}");
  37. m_sProjectsJson = sbProjects.ToString();
  38. }
  39. }
  40. }
  41. }
  42. private void BindUsers()
  43. {
  44. DataTable dtUsers = new DataTable();
  45. DbProviderFactory dbf = DbProviderFactories.GetFactory();
  46. using (IDbConnection con = dbf.CreateConnection())
  47. {
  48. con.Open();
  49. using (IDbCommand cmd = con.CreateCommand())
  50. {
  51. string sSQL = "SELECT DISTINCT USER_ID,USER_NAME,PROJECT_ID FROM vwPROJECT_USERS WHERE USER_ID IS NOT NULL GROUP BY USER_ID,USER_NAME,PROJECT_ID ORDER BY USER_NAME" + ControlChars.CrLf;
  52. cmd.CommandText = sSQL;
  53. using (DbDataAdapter da = dbf.CreateDataAdapter())
  54. {
  55. ((IDbDataAdapter)da).SelectCommand = cmd;
  56. da.Fill(dtUsers);
  57. StringBuilder sbUsers = new StringBuilder();
  58. if (dtUsers != null && dtUsers.Rows.Count > )
  59. {
  60. sbUsers.Append("{\"user\":[");
  61. int i = ;
  62. int count = dtUsers.Rows.Count;
  63. foreach (DataRow row in dtUsers.Rows)
  64. {
  65. if (i == count)
  66. {
  67. sbUsers.Append("{\"project\":\"" + Sql.ToString(row["PROJECT_ID"]) + "\",\"id\":\"" + Sql.ToString(row["USER_ID"]) + "\",\"name\":\"" + Sql.ToString(row["USER_NAME"]) + "\"}");
  68. }
  69. else
  70. {
  71. sbUsers.Append("{\"project\":\"" + Sql.ToString(row["PROJECT_ID"]) + "\",\"id\":\"" + Sql.ToString(row["USER_ID"]) + "\",\"name\":\"" + Sql.ToString(row["USER_NAME"]) + "\"},");
  72. }
  73. i++;
  74. }
  75. sbUsers.Append("]");
  76. }
  77. sbUsers.Append("}");
  78. m_sUserJson = sbUsers.ToString();
  79. }
  80. }
  81. }
  82. }
  1. private static string m_sProjectsJson = "";
  2. public static string ProjectsJson
  3. {
  4. get { return m_sProjectsJson; }
  5. }
  6.  
  7. private static string m_sUserJson = "";
  8. public static string UsersJson
  9. {
  10. get { return m_sUserJson; }
  11. }

3.javascript

  1. $("#<%=ddlClient.ClientID%>").change(function () {
  2. loadproject();
  3. });
  4. $("#<%=ddlProject.ClientID%>").change(function () {
  5. loaduser();
  6. });
  1. function loadproject() {
  2. var client = $("#<%=ddlClient.ClientID%>").val();
  3. var projectArray = jQuery.parseJSON('<%= ProjectsJson%>');
  4. var filtered = $.grep(projectArray.project,
  5. function (item) {
  6. if (client != "") {
  7. return item.client == client;
  8. }
  9. else {
  10. return item;
  11. }
  12. }
  13. );
  14. $("#<%=ddlProject.ClientID%>").empty();
  15. $.each(filtered, function (i, item) {
  16. $("#<%=ddlProject.ClientID%>").append("<option value='" + item.id + "'>" + item.name + "</option>");
  17. });
  18. }
  1. function loaduser() {
  2. var project = $("#<%=ddlProject.ClientID%>").val();
  3. var userArray = jQuery.parseJSON('<%= UsersJson%>');
  4. var filtered = $.grep(userArray.user,
  5. function (item) {
  6. if (project != "") {
  7. return item.project == project;
  8. }
  9. else {
  10. return item;
  11. }
  12. }
  13. );
  14. $("#<%=ddlUser.ClientID%>").empty();
  15. $.each(filtered, function (i, item) {
  16. $("#<%=ddlUser.ClientID%>").append("<option value='" + item.id + "'>" + item.name + "</option>");
  17. });
  18. }

.net DropDownList静态联动的更多相关文章

  1. DropDownList四级联动

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="iframe_dro ...

  2. ASP .NET DropDownList多级联动事件

    思路 假如有三级省.市.区,先加载出所有省选择省之后,加载出该省所有市选择市之后,加载出该市所有区重新选择省,则清空市和区重新选择市,则清空区想好数据结构,不同的数据结构做法不同 例子 数据结构 pu ...

  3. dropdownlist 二级联动

    protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { GradeBind(); } } //绑定 ...

  4. MVC学习系列7--下拉框的联动

    [使用场景:两个DropDownList的联动,选择其中一个DropDownList,然后加载数据到另外的一个DropDownList上] 这里,我打算实现的需求是:有两个DropDownList,一 ...

  5. 用jquery+Asp.Net实现省市二级联动

    页面html: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ddlAjax. ...

  6. MVC学习系列4--@helper辅助方法和用户自定义HTML方法

    在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...

  7. WebForm使用JQuery实现DropDownList无刷新联动

    目录(?)[-] 1  JS代码 2 页面相关控件用的是平台封装的控件普通DropDownList也可以 3 后台C代码 注意事项   原来用的微软封装的Ajax控件UpdatePannel和Scri ...

  8. 用DropDownList实现的省市级三级联动

    这是一个用DropDownList 实现的省市级三级联动,记录一下········ <asp:ScriptManager ID="ScriptManager1" runat= ...

  9. MVC编辑状态两个DropDownList联动

    前几天使用jQuery在MVC应用程序中,实现了<jQuery实现两个DropDownList联动(MVC)>http://www.cnblogs.com/insus/p/3414480. ...

随机推荐

  1. 9.JAVA中的正则表达式

    一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ?          #{0,1}-?有一个-或者没有 \\           #表示一个" ...

  2. vue

    vue.js 插件 setting--> plugins 搜索vue,下载安装如果想要高亮显示*.vue文件,可以在File Types 选项里找到HTML,然后在下方手动添加*.vue,这样就 ...

  3. Linux下xampp集成环境安装配置方法 、部署bugfree及部署禅道

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.XAMPP 是一个易于安装且包含 MySQL.PHP 和 Perl 的 Apache 发行版.XAMPP 的确非 ...

  4. 关于vector的内存释放问题

    以前一直想当然的以为vector 的clear()函数会保证释放vector的内存,今天网上一查资料发现完全不是我想象的那样子. 比如有如下代码: tempObject obj1; tempObjec ...

  5. linux xorddos样本分析2

    逆向分析 之后我们通过ida对该样本进行更深入的分析样本的main函数中,一开始会调用函数dec_conf对样本中的大量加密的字符串进行解密,如下图所示.

  6. 《DSP using MATLAB》示例Example5.14

    代码: x1 = [1,2,2]; x2 = [1,2,3,4]; y = circonvt(x1,x2,4) n1 = 0:1:length(x1)-1; n2 = 0:1:length(x2)-1 ...

  7. java基础-泛型2

    浏览以下内容前,请点击并阅读 声明 6 类型推测 java编译器能够检查所有的方法调用和对应的声明来决定类型的实参,即类型推测,类型的推测算法推测满足所有参数的最具体类型,如下例所示: //泛型方法的 ...

  8. VBA找不到progress bar的处理办法。

    Search your pc for MSCOMCTL.Ocx. If you find it then register it by clicking on Windows Start Button ...

  9. dedecms 时间标签strftime和MyDate

    先说下内容页样式: 日期:{field:pubdate function=strftime('m-d',@me)/} 01-01 日期:{field:pubdate function=strftime ...

  10. Node.js用ES6原生Promise对异步函数进行封装

    Promise的概念 Promise 对象用于异步(asynchronous)计算..一个Promise对象代表着一个还未完成,但预期将来会完成的操作. Promise的几种状态: pending:初 ...