效果如下:
ColumnSort.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ColumnSort.ascx.cs"
Inherits="Unisoft.ICS.Web.UserControls.DropDown.ColumnSort" %>
<asp:DropDownList ID="ddlSortColumn" runat="server" AutoPostBack="true"
onselectedindexchanged="ddlSortColumn_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="ddlSortExt" runat="server" AutoPostBack="true"
onselectedindexchanged="ddlSortExt_SelectedIndexChanged">
<asp:ListItem Value="DESC" Text="倒序" Selected="True"></asp:ListItem>
<asp:ListItem Value="ASC" Text="正序"></asp:ListItem>
</asp:DropDownList>
ColumnSort.ascx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace Unisoft.ICS.Web.UserControls.DropDown
{
public partial class ColumnSort : System.Web.UI.UserControl
{
/// <summary>
/// 声明SortColumnChange事件委托
/// </summary>
public delegate void SortColumnChangeDelegate();
/// <summary>
/// 定义SortColumnChange事件
/// </summary>
public event SortColumnChangeDelegate SortColumnChangeEvent;
/// <summary>
/// 声明SortExtChange事件委托
/// </summary>
public delegate void SortExtChangeDelegate();
/// <summary>
/// 定义SortExtChange事件
/// </summary>
public event SortExtChangeDelegate SortExtChangeEvent;
/// <summary>
/// 获取排序字符串
/// 如:CustomerID DESC/ASC
/// </summary>
public string Sort
{
get
{ return this.ddlSortColumn.SelectedValue + " " + this.ddlSortExt.SelectedValue; }
}
/// <summary>
/// 获取或设置排序列
/// </summary>
public string SortColum
{
get
{ return this.ddlSortColumn.SelectedValue; }
set
{ this.ddlSortColumn.SelectedValue = value; }
}
/// <summary>
/// 获取或设置DESC,ASC(DESC倒序,ASC正序)
/// </summary>
public string SortExt
{
get
{ return this.ddlSortExt.SelectedValue; }
set
{ this.ddlSortExt.SelectedValue = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 下拉框-填充值
/// </summary>
/// <param name="arr">如:CreateTime:创建日期|UpdateTime:修改日期|UserID:用户编号</param>
public void BindSortColumn(string arr)
{
//清除空格,按|分割成数组
string[] arrColumn = arr.Replace(" ", "").Split('|');
foreach (var item in arrColumn)
{
string value = item.Substring(0, item.IndexOf(":"));//“:”前的内容
string text = item.Substring(item.IndexOf(":") + 1);//“:”后的内容
this.ddlSortColumn.Items.Add(new ListItem(text, value));//Add到下拉框
}
}
//更改选项时,触发Customer.aspx.cs中的查询方法
protected void ddlSortColumn_SelectedIndexChanged(object sender, EventArgs e)
{
SortColumnChangeEvent();
}
//更改选项时,触发Customer.aspx.cs中的查询方法
protected void ddlSortExt_SelectedIndexChanged(object sender, EventArgs e) { SortExtChangeEvent(); } }}
绑定用户控件下拉框及事件
CustomerList.aspx引用:
<%@ Register Src="../../UserControls/DropDown/ColumnSort.ascx" TagName="ColumnSort"
TagPrefix="uc1" %>
HTML:
<uc1:ColumnSort ID="ucColumnSort" runat="server" />
CustomerList.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
//委托事件
this.ucColumnSort.SortColumnChangeEvent += new Unisoft.ICS.Web.UserControls.DropDown.ColumnSort.SortColumnChangeDelegate(ucColumnSort_SortColumnChangeEvent);
this.ucColumnSort.SortExtChangeEvent += new Unisoft.ICS.Web.UserControls.DropDown.ColumnSort.SortExtChangeDelegate(ucColumnSort_SortExtChangeEvent);
if (!Page.IsPostBack)
{
string arr = "CustomerID:客户编号|CustomerName:客户名称|CDTTypeName:证件类型|CDTCode:证件号码|CDTIssue:发证机关|LinkMan:联系人|Phone:电话|BelongUserName:客户所有人";
this.ucColumnSort.BindSortColumn(arr);//绑定排序项
this.BindCustomerList();//查询方法
}
}
#region 排序控件,委托事件
void ucColumnSort_SortColumnChangeEvent()
{
this.BindCustomerList();//触发查询事件
}
void ucColumnSort_SortExtChangeEvent()
{
this.BindCustomerList();//触发查询事件
}
#endregion