listview sorting
星期三, 三月 10, 2010 | 標籤: ASP.NET | 0 意見 |今天客戶有個需求,他希望可以做出像gridview那樣可以每個column都可以sorting,可是客戶的table又很ㄋㄧㄠ,所以我決定要用ListView這個control來做出效果,這裡用簡單的方式做出來,在這紀錄一下..看code吧..
.aspx
<asp:ListView ID="ListView1" runat="server" ItemPlaceholderID="ph">
<LayoutTemplate>
<table>
<thead>
<tr>
<th>
<asp:LinkButton ID="lbtnID" runat="server"
Text="客戶編號" CommandName="客戶編號"></asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="lbtnName" runat="server"
Text="公司名稱" CommandName="公司名稱"></asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="lbtnContact" runat="server"
Text="連絡人" CommandName="連絡人"></asp:LinkButton>
</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder ID="ph" runat="server"></asp:PlaceHolder>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Literal ID="litT1" runat="server" Text='<%# Eval("客戶編號") %>' />
</td>
<td>
<asp:Literal ID="litT2" runat="server" Text='<%# Eval("公司名稱") %>' />
</td>
<td>
<asp:Literal ID="litT3" runat="server" Text='<%# Eval("連絡人") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
public partial class _Default : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ListView1.LayoutCreated += new EventHandler(ListView1_LayoutCreated);
}
/// <summary>
/// 連線字串
/// </summary>
string ConnectionString
{
get
{
return ConfigurationManager
.ConnectionStrings["cNorthWindConnectionString"].ConnectionString;
}
}
/// <summary>
/// 紀錄排序的欄位名稱
/// </summary>
public string SortName
{
get
{
if (ViewState["SortName"] != null)
{
return ViewState["SortName"].ToString();
}
return "";
}
set
{
ViewState["SortName"] = value;
}
}
/// <summary>
/// 紀錄升冪還是降冪
/// </summary>
public string SortState
{
get
{
if (ViewState["SortState"] != null)
{
return ViewState["SortState"].ToString();
}
return "";
}
set
{
ViewState["SortState"] = value;
}
}
/// <summary>
/// 按鈕觸發的function
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void lbtn_Command(object sender, CommandEventArgs e)
{
using (var db = new B.Framework.DataBase.ADO.ADOHelper(ConnectionString))
{
string sortString;
string CommandName = e.CommandName.ToString();
string CommandArgument = e.CommandArgument.ToString();
if (CommandName != SortName)
{
SortName = CommandName;
SortState = "";
sortString = string.Concat("order by ", CommandName);
}
else
{
if (CommandArgument == SortState)
{
SortState = "desc";
sortString = string.Format("order by {0} desc", CommandName);
}
else
{
SortState = "";
sortString = string.Concat("order by ", CommandName);
}
}
ListView1.DataSource =
db.ExecuteTable(string.Concat("select * from 客戶 ", sortString));
ListView1.DataBind();
}
}
void ListView1_LayoutCreated(object sender, EventArgs e)
{
LinkButton lbtnID = ListView1.FindControl("lbtnID") as LinkButton;
LinkButton lbtnName = ListView1.FindControl("lbtnName") as LinkButton;
LinkButton lbtnContact = ListView1.FindControl("lbtnContact") as LinkButton;
lbtnName.Command += new CommandEventHandler(lbtn_Command);
lbtnID.Command += new CommandEventHandler(lbtn_Command);
lbtnContact.Command += new CommandEventHandler(lbtn_Command);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitForm();
}
}
/// <summary>
/// 初始化
/// </summary>
private void InitForm()
{
using (var db = new B.Framework.DataBase.ADO.ADOHelper(ConnectionString))
{
ListView1.DataSource =
db.ExecuteTable(string.Concat("select * from 客戶 "));
ListView1.DataBind();
}
}
}



