ascx页面:
<style type="text/css">
.DivCheckBoxList
{
display: none;
border: 1px solid Gray;
background-color: White;
width: 100px;
position:absolute;
height: 200px;
overflow-y: auto;
overflow-x: hidden;
margin-top: -2px;
}
.CheckBoxList
{
position: relative;
width: 10px;
height: 10px;
overflow: scroll;
font-size: small;
}
#divCustomCheckBoxList
{
float:left;
width:104px;
}
.droupDownList{ float:left; width:100px; height:22px;}
.droupListInput{ position:absolute;}
.droupListRight{ position:absolute; margin-left:85px; margin-top:3px; width:17px; height:17px; z-index:100; background-image:url(../../Images/icon_cown.png);}
</style>
<script language="javascript" type="text/javascript">
var timoutID;
function ShowMList_<%=random %>() {
var divRef = document.getElementById("<%=divCheckBoxList.ClientID%>");
divRef.style.display = "block";
var divRefC = document.getElementById("<%=divCheckBoxListClose.ClientID%>");
divRefC.style.display = "block";
}
function HideMList_<%=random %>() {
if (document.getElementById("<%=divCheckBoxList.ClientID%>") != null)
document.getElementById("<%=divCheckBoxList.ClientID%>").style.display = "none";
document.getElementById("<%=divCheckBoxListClose.ClientID%>").style.display = "none";
}
function changeInfo_<%=random %>() {
var ObjectText = "";
var ObjectValue = "";
var r = document.getElementsByName("subBox_<%=random %>");
for (var i = 0; i < r.length; i++) {
if (r[i].checked) {
ObjectValue += r[i].value + ",";
ObjectText += r[i].nextSibling.nodeValue + ",";
}
document.getElementById("txtcboName_<%=random %>").value = ObjectText;
$("#<%=hidSelectValue.ClientID %>").val(ObjectValue);
}
if ("true" == "<%=isAutoPostBack %>") {
$("#<%=hidSelectCheck.ClientID %>").val("true");
document.forms[0].submit();
}
}
</script>
<div id="divCustomCheckBoxList" οnmοuseοver="clearTimeout(timoutID);" οnmοuseοut="timoutID = setTimeout('HideMList_<%=random %>()', 10);">
<table width="100" cellpadding="0" cellspacing="0">
<tr>
<td align="left">
<div class="droupDownList">
<div class="droupListInput"><input id="txtcboName_<%=random %>" type="text" value="<%=SelectText %>" readonly="readonly" οnclick="ShowMList_<%=random %>()" style="width: 100px;" /></div>
<div class="droupListRight" οnclick="ShowMList_<%=random %>()" style="cursor:pointer"></div>
</div>
</td>
<td align="left" valign="middle"><%-- <a href="#" οnclick="ShowMList()" >选择</a>--%></td>
</tr>
<tr>
<td colspan="2">
<div id="divCheckBoxList" class="DivCheckBoxList" runat="server">
<%=cbostr%>
</div>
<div id="divCheckBoxListClose" runat="server">
</div>
</td>
</tr>
</table>
</div>
<asp:HiddenField ID="hidID" runat="server" />
<asp:HiddenField ID="hidSelectCheck" runat="server" />
<asp:HiddenField ID="hidSelectValue" runat="server" />
<asp:HiddenField ID="hidSelectText" runat="server" />
ascx.cs页面:
public string cbostr { get; set; }
public string selectID { get; set; }//复选框的value值
public string SelectText { get; set; } // 复选框的Text值
public DataTable DataSource { get; set; }//数据源
public string dataTextName { get; set; }//DataTextName
public string dataValueName { get; set; } //DataValueName
public string isAutoPostBack { get; set; }
public string SelectedValue { get { return hidSelectValue.Value; } set { hidSelectValue.Value = value; } }//选中的字符串值
public string AutoPostBack { get { return hidSelectCheck.Value; } }
protected string random = string.Empty;
#region Page_Load
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
hidSelectValue.Value = selectID;
hidID.Value = this.ID;
}
else if (WebCommon.GetIsNullOrEmpty(isAutoPostBack).Equals("true") && WebCommon.GetIsNullOrEmpty(hidSelectCheck.Value).Equals("true"))
{
hidSelectCheck.Value = string.Empty;
}
random = this.ID;
BindData();
}
#endregion
#region 绑定数据
/// <summary>
/// BindData
/// </summary>
protected void BindData()
{
string listStr = string.Empty;
DataTable dt = DataSource;
for (int i = 0; i < dt.Rows.Count; i++)
{
string chkChecked = string.Empty;
if (!string.IsNullOrEmpty(SelectedValue))
{
string[] arrstr = SelectedValue.Split(',');
if (arrstr != null)
{
for (int c = 0; c < arrstr.Length; c++)
{
if (arrstr[c] == dt.Rows[i][dataValueName].ToString())
{
chkChecked = "checked=\"checked\"";
selectID += dt.Rows[i][dataValueName] + ",";
SelectText += dt.Rows[i][dataTextName] + ",";
}
}
}
}
listStr += "<div><input type=\"checkbox\" " + chkChecked + " name=\"subBox_" + random + "\" οnclick=\"changeInfo_" + random + "()\" value=\""
+ dt.Rows[i][dataValueName] + "\" />" + dt.Rows[i][dataTextName] + "</div>";
}
cbostr = listStr;
}
#endregion
aspx页面:
<%@ Register Src="../Common/MultDroupDownList.ascx" TagName="CheckboxListControl" TagPrefix="uc1" %>
<uc1:CheckboxListControl ID="ddlDept" runat="server" dataTextName="dept_name" dataValueName="dept_id" isAutoPostBack="true" />
aspx.cs页面:
/// <summary>
/// 初始化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
ddlDept.DataSource = ListHelper.GetDept_Name_py(false);
string depts = ddlDept.SelectedValue;
if (!string.Empty.Equals(WebCommon.GetIsNullOrEmpty(depts)))
{
depts = depts.TrimEnd(',');
}
else
{
depts = WebCommon.Current.Dept.DEPT_ID;
}
if (!IsPostBack)
{
}
else if (ddlDept.AutoPostBack.Equals("true") || ddlStation.AutoPostBack.Equals("true") || ddlGroup.AutoPostBack.Equals("true"))
{
QueryData();
}
}