1.前台

 <span id="spnClient" style="margin-left: 30px; margin-top: 10px">
<lable>Client: </lable>
<asp:DropDownList ID="ddlClient" DataValueField="ID" DataTextField="NAME" runat="server" />
</span> <span id="spnProject" style="margin-left: 30px; margin-top: 10px">
<lable>Project: </lable>
<asp:DropDownList ID="ddlProject" DataValueField="ID" DataTextField="NAME" runat="server" />
</span>
<span id="spnUser" style="display: none; margin-left: 30px; margin-top: 10px;">
<lable>User: </lable>
<asp:DropDownList ID="ddlUser" DataValueField="ID" DataTextField="USER_NAME" runat="server" />
</span>

2.绑定DataSource

        private void LoadDropDownList()
{
DataTable dtYear =SplendidCache.Years();
ddlYEAR.DataSource = dtYear;
ddlYEAR.DataBind();
ddlYEAR.SelectedValue = DateTime.Now.Year.ToString(); DataTable dtClient = SplendidCache.Client(true);
ddlClient.DataSource = dtClient;
ddlClient.DataBind(); DataTable dtProject = SplendidCache.Project();
ddlProject.DataSource = dtProject;
ddlProject.DataBind(); DataTable dtUser = SplendidCache.AssignedUser();
ddlUser.DataSource = dtUser;
ddlUser.DataBind(); BindProjects();
BindUsers();
}
         private void BindProjects()
{
DataTable dtProjects = new DataTable();
DbProviderFactory dbf = DbProviderFactories.GetFactory();
using (IDbConnection con = dbf.CreateConnection())
{
con.Open();
using (IDbCommand cmd = con.CreateCommand())
{
string sSQL = "SELECT ID,NAME,CLIENTID FROM Project WHERE DELETED=0 ORDER BY NAME " + ControlChars.CrLf;
cmd.CommandText = sSQL;
using (DbDataAdapter da = dbf.CreateDataAdapter())
{
((IDbDataAdapter)da).SelectCommand = cmd;
da.Fill(dtProjects);
StringBuilder sbProjects = new StringBuilder();
if (dtProjects != null && dtProjects.Rows.Count > )
{
sbProjects.Append("{\"project\":[");
int i = ;
int count = dtProjects.Rows.Count;
foreach (DataRow row in dtProjects.Rows)
{
if (i == count)
{
sbProjects.Append("{\"client\":\"" + Sql.ToString(row["CLIENTID"]) + "\",\"id\":\"" + Sql.ToString(row["ID"]) + "\",\"name\":\"" + Sql.ToString(row["NAME"]).Replace("'","‘") + "\"}");
}
else
{
sbProjects.Append("{\"client\":\"" + Sql.ToString(row["CLIENTID"]) + "\",\"id\":\"" + Sql.ToString(row["ID"]) + "\",\"name\":\"" + Sql.ToString(row["NAME"]).Replace("'", "‘") + "\"},");
}
i++;
}
sbProjects.Append("]");
}
sbProjects.Append("}");
m_sProjectsJson = sbProjects.ToString();
}
}
}
}
private void BindUsers()
{
DataTable dtUsers = new DataTable();
DbProviderFactory dbf = DbProviderFactories.GetFactory();
using (IDbConnection con = dbf.CreateConnection())
{
con.Open();
using (IDbCommand cmd = con.CreateCommand())
{
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;
cmd.CommandText = sSQL;
using (DbDataAdapter da = dbf.CreateDataAdapter())
{
((IDbDataAdapter)da).SelectCommand = cmd;
da.Fill(dtUsers);
StringBuilder sbUsers = new StringBuilder();
if (dtUsers != null && dtUsers.Rows.Count > )
{
sbUsers.Append("{\"user\":[");
int i = ;
int count = dtUsers.Rows.Count;
foreach (DataRow row in dtUsers.Rows)
{
if (i == count)
{
sbUsers.Append("{\"project\":\"" + Sql.ToString(row["PROJECT_ID"]) + "\",\"id\":\"" + Sql.ToString(row["USER_ID"]) + "\",\"name\":\"" + Sql.ToString(row["USER_NAME"]) + "\"}");
}
else
{
sbUsers.Append("{\"project\":\"" + Sql.ToString(row["PROJECT_ID"]) + "\",\"id\":\"" + Sql.ToString(row["USER_ID"]) + "\",\"name\":\"" + Sql.ToString(row["USER_NAME"]) + "\"},");
}
i++;
}
sbUsers.Append("]");
}
sbUsers.Append("}");
m_sUserJson = sbUsers.ToString();
}
}
}
}
    private static string m_sProjectsJson = "";
public static string ProjectsJson
{
get { return m_sProjectsJson; }
} private static string m_sUserJson = "";
public static string UsersJson
{
get { return m_sUserJson; }
}

3.javascript

     $("#<%=ddlClient.ClientID%>").change(function () {
loadproject();
});
$("#<%=ddlProject.ClientID%>").change(function () {
loaduser();
});
        function loadproject() {
var client = $("#<%=ddlClient.ClientID%>").val();
var projectArray = jQuery.parseJSON('<%= ProjectsJson%>');
var filtered = $.grep(projectArray.project,
function (item) {
if (client != "") {
return item.client == client;
}
else {
return item;
}
}
);
$("#<%=ddlProject.ClientID%>").empty();
$.each(filtered, function (i, item) {
$("#<%=ddlProject.ClientID%>").append("<option value='" + item.id + "'>" + item.name + "</option>");
});
}
    function loaduser() {
var project = $("#<%=ddlProject.ClientID%>").val();
var userArray = jQuery.parseJSON('<%= UsersJson%>');
var filtered = $.grep(userArray.user,
function (item) {
if (project != "") {
return item.project == project;
}
else {
return item;
}
}
);
$("#<%=ddlUser.ClientID%>").empty();
$.each(filtered, function (i, item) {
$("#<%=ddlUser.ClientID%>").append("<option value='" + item.id + "'>" + item.name + "</option>");
});
}

.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. SQL IN ANY ,(all any) 区别

    EXITS 和 IN 的区别: 从效率来看: 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T ...

  2. thinphp下拉获取更多瀑布流效果

    html页面 <body> <script type="text/javascript" src="jquery.min.js">< ...

  3. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  4. 我为什么喜欢用C#来做并发编程

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:就语言和运行时层面,C#做并发编程一点都不弱,缺的是生态和社区. 硅谷才女朱赟(我的家 ...

  5. Winform实现用多线程、百度地图API解析某公司的物理地址

    前言 作为一个很挫的C#新手总喜欢自己写点儿不着边际的东西,本人是个新手加菜鸟,写B/S的,工作中,任务完成了,空闲下来,总想继续学点儿什么,由此触发了本篇文章了.个人一直认为,.NET中,C/S所要 ...

  6. Requests库练习

    预备知识 字符串方法 用途 string.partition(str) 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 ...

  7. HTML5离线Web应用实战:五步创建成功

    [IT168 技术]HTML5近十年来发展得如火如荼,在HTML 5平台上,视频,音频,图象,动画,以及同电脑的交互都被标准化.HTML功能越来越丰富,支持图片上传拖拽.支持localstorage. ...

  8. BestCoder Round #85(ZOJ1569尚未验证)

    A题 子序列和啊,就要想到前缀和的差.这个转换一定要!记着!那么i到j的一段子序列和Sij%m ==  0就等价于(Sj-Si-1)%m == 0 了,那么什么意思呢?就是如果有两段前缀和%m的模是一 ...

  9. oracle 资源学习汇总

    1:修改密码   http://blog.csdn.net/qh_java/article/details/23202259 2:Oracle数据库.实例.用户.表空间.表之间的关系

  10. 比管理员(administrator)更高权限的TrustedInstaller

    http://www.gezila.com/tutorials/9664.html 什么是TrustedInstaller管理权限 ?好多朋友都在使用Windows7系统.在使用过程中,有些朋友在删除 ...