目录: 

ListView控件学习系列1-了解ListView控件

ListView控件学习系列2-编辑ListView

ListView控件学习系列3-ListView选择,排序,分页

ListView使用技巧

 

源码下载

 

作者:Lance

 

选择例子
前端代码:

 

 
            onselectedindexchanging="ListView1_SelectedIndexChanging">
            
<LayoutTemplate>
                
<table id="Table1" runat="server" border="0" style="">
                    
<tr runat="server" id="itemPlaceholder" />
                
</table>
            
</LayoutTemplate>
            
<ItemTemplate>
                
<tr>
                    
<td>
                        
<%#Eval("ID"%>
                    
</td>
                    
<td>
                        
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
                    
</td>
                    
<td>
                        
<asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
                    
</td>
                    
<td>
                    
<asp:Button ID="SelectButton" CommandName="Select" runat="server" Text="选择" />
                    
</td>
                    
                
</tr>
            
</ItemTemplate>
            
<SelectedItemTemplate>
            
<tr style="background-color:Blue">
                    
<td>
                        
<%#Eval("ID"%>
                    
</td>
                    
<td>
                        
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
                    
</td>
                    
<td>
                        
<asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
                    
</td>
                    
<td>
                    
<asp:Button ID="SelectButton" CommandName="Select" runat="server" Text="选择" />
                    
</td>
                    
                
</tr>
            
</SelectedItemTemplate>
       
</asp:ListView>

后台代码:

 

 sender, ListViewSelectEventArgs e)
    {
        ListView1.SelectedIndex = e.NewSelectedIndex;
        Bind();
    }

 

排序前端代码:

 


            <LayoutTemplate>
                
<table id="Table1" runat="server" border="0" style="">
                    
<tr>
                        
<td>
                            
<asp:LinkButton ID="LinkButton1" CommandArgument="ID" runat="server" CommandName="Sort">ID</asp:LinkButton>
                        
</td>
                        
<td>
                            
<asp:LinkButton ID="LinkButton2" CommandArgument="Name" runat="server" CommandName="Sort">Name</asp:LinkButton>
                        
</td>
                        
<td>
                            
<asp:LinkButton ID="LinkButton3" CommandArgument="Age" runat="server" CommandName="Sort">Age</asp:LinkButton>
                        
</td>
                    
</tr>
                    
<tr runat="server" id="itemPlaceholder" />
                
</table>
            
</LayoutTemplate>
            
<ItemTemplate>
                
<tr>
                    
<td>
                        
<%#Eval("ID"%>
                    
</td>
                    
<td>
                        
<%# Eval("name"%>
                    
</td>
                    
<td>
                        
<%# Eval("age"%>
                    
</td>
                
</tr>
            
</ItemTemplate>
        
</asp:ListView>

 

排序模拟数据提供代码:

 

 Data
{
    /// <summary>
    
///DataAccess 的摘要说明
    
/// </summary>
    public class DataAccess
    {
        
public List<Employee> List;
        
public DataAccess()
        {
            List 
= new List<Employee>();
            Employee e1 
= new Employee { ID = 1, Name = "A", Age = 10 };
            Employee e2 
= new Employee { ID = 3, Name = "M", Age = 30 };
            Employee e3 
= new Employee { ID = 2, Name = "B", Age = 40 };
            Employee e4 
= new Employee { ID = 4, Name = "S", Age = 19 };
            Employee e5 
= new Employee { ID = 6, Name = "X", Age = 18 };
            Employee e6 
= new Employee { ID = 5, Name = "W", Age = 20 };
            List.Add(e1);
            List.Add(e2);
            List.Add(e3);
            List.Add(e4);
            List.Add(e5);
            List.Add(e6);
        }
        
public void SortID( string sortDirection)
        {
            
if (sortDirection == "ASC")
            {
                List.Sort(
new EmployeeIDAscCompare());
            }
            
else
            {
                List.Sort(
new EmployeeIDDescCompare());
            }
        }
    }
    
class EmployeeIDAscCompare:IComparer<Employee>
    {

        
#region IComparer<Employee> 成员

        
public int Compare(Employee x, Employee y)
        {
            
return x.ID.CompareTo(y.ID);
        }

        
#endregion
    }
    
class EmployeeIDDescCompare : IComparer<Employee>
    {

        
#region IComparer<Employee> 成员

        
public int Compare(Employee x, Employee y)
        {
            
return y.ID.CompareTo(x.ID);
        }

        
#endregion
    }
    
    
public class Employee
    {
        
public int ID { getset; }
        
public string Name { getset; }
        
public int Age { getset; }
        
public int Sex { getset; }
    }
}

 

排序后台代码:

 Default3 : System.Web.UI.Page
{
    DataAccess da;
    protected void Page_Load(object sender, EventArgs e)
    {
        
if (Session["da"== null)
        {
            da 
= new DataAccess();
            Session[
"da"= da;
        }
        
else
        {
            da 
= Session["da"as DataAccess;
        }
        
if (!IsPostBack)
        {
            Bind();
        }
    }
    
private void Bind()
    {
        ListView1.DataSource 
= da.List;
        ListView1.DataBind();
    }
    
protected void ListView1_Sorting(object sender, ListViewSortEventArgs e)
    {
        
if (String.IsNullOrEmpty(e.SortExpression)) { return; }
        
string direction = "";
        
if (ViewState["SortDirection"!= null)
            direction 
= ViewState["SortDirection"].ToString();

        
if (direction == "ASC")
            direction 
= "DESC";
        
else
            direction 
= "ASC";

        ViewState[
"SortDirection"= direction;

        da.SortID(direction);
        Bind();
    }
}

 

分页例子:
前端代码:

 


            <LayoutTemplate>
                
<table id="Table1" runat="server" border="0" style="">
                    
<tr runat="server" id="itemPlaceholder" />
                
</table>
            
</LayoutTemplate>
            
<ItemTemplate>
                
<tr>
                    
<td>
                        
<%#Eval("ID"%>
                    
</td>
                    
<td>
                        
<%# Eval("name"%>
                    
</td>
                    
<td>
                        
<%# Eval("age"%>
                    
</td>
                
</tr>
            
</ItemTemplate>
        
</asp:ListView>
    
</div>
    
<div style="padding: 10px; text-align: right;">
        
<asp:DataPager ID="Pager" runat="server" PagedControlID="ListView1" PageSize="2">
            
<Fields>
                
<asp:NumericPagerField ButtonCount="10" NextPageText="" PreviousPageText="" />
                
<asp:NextPreviousPagerField FirstPageText="First" LastPageText="Last" NextPageText="Next"
                    PreviousPageText
="Previous" />
            
</Fields>
        
</asp:DataPager>
    
</div>

 

后台代码:

 

 sender, PagePropertiesChangingEventArgs e)
    {
        Pager.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
        Bind();
    }

 

 

相关文章: