.net DropDownList静态联动
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静态联动的更多相关文章
- DropDownList四级联动
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="iframe_dro ...
- ASP .NET DropDownList多级联动事件
思路 假如有三级省.市.区,先加载出所有省选择省之后,加载出该省所有市选择市之后,加载出该市所有区重新选择省,则清空市和区重新选择市,则清空区想好数据结构,不同的数据结构做法不同 例子 数据结构 pu ...
- dropdownlist 二级联动
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { GradeBind(); } } //绑定 ...
- MVC学习系列7--下拉框的联动
[使用场景:两个DropDownList的联动,选择其中一个DropDownList,然后加载数据到另外的一个DropDownList上] 这里,我打算实现的需求是:有两个DropDownList,一 ...
- 用jquery+Asp.Net实现省市二级联动
页面html: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ddlAjax. ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
- WebForm使用JQuery实现DropDownList无刷新联动
目录(?)[-] 1 JS代码 2 页面相关控件用的是平台封装的控件普通DropDownList也可以 3 后台C代码 注意事项 原来用的微软封装的Ajax控件UpdatePannel和Scri ...
- 用DropDownList实现的省市级三级联动
这是一个用DropDownList 实现的省市级三级联动,记录一下········ <asp:ScriptManager ID="ScriptManager1" runat= ...
- MVC编辑状态两个DropDownList联动
前几天使用jQuery在MVC应用程序中,实现了<jQuery实现两个DropDownList联动(MVC)>http://www.cnblogs.com/insus/p/3414480. ...
随机推荐
- 如何创建 Code Snippet
比如有一行自定义代码段: @property (nonatomic,copy) NSString *<#string#>; 需要添加到 Code Snippet 上,以帮助开发人员开发更便 ...
- Revolving Digits(hdu 4333)
题意:就是给你一个数字,然后把最后一个数字放到最前面去,经过几次变换后又回到原数字,问在这些数字中,比原数字小的,相等的,大的分别有多少个.比如341-->134-->413-->3 ...
- SQL入门语句之运算符
运算符是一个保留字或字符,主要用于连接WHERE后面的条件. 一.算数运算符 运算符 描述 + 加法 - 把运算符两边的值相加 - 减法 - 左操作数减去右操作数 * 乘法 - 把运算符两边的值相乘 ...
- angularjs之ng-if、ng-show、ng-switch那些事
一.蓝瘦~香菇 经常在项目中使用ng-if和ng-show来处理一些简单的状态,今天碰到一个复杂的状态判断,不经让我想起ng-switch.第一次接触他的时候,我没怎么注意他,因为我直接把他当作其 ...
- Linux 第06天
Linux 第06天 1.SAMBA服务器————(linux和windows的文件共享) 1.1 安装 yum install samba -yum 1.2 配置文件 /etc/samba/smb. ...
- 数据类型和Json格式
1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml. 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开. 它说,从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一 ...
- Java关键字
Java关键字简介 类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public 公共的 类.方法和变量修饰符 abstract 声明抽象 class 类 exte ...
- log4j.properties 使用
一.参数意义说明 输出级别的种类 ERROR.WARN.INFO.DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如 ...
- jqgrid 中的事件
1. var obj = $("#tablename").jqGrid("getRowData"); 取得所有的行 alert(obj.length); ...
- Moses 安装
参考:Moses相关介绍与安装简介 http://www.52nlp.cn/moses-introduction 一.Moses简介 http://www.52nlp.cn/moses-introdu ...