.net之Datalist控件


主要屬性:
RepeatDirection:項的布局方向。
RepeatColumns:該布局的列的數目,默認為0.即不限制。
使用 DataList 控件顯示模板定義的數據綁定列表。DataList 控件支持選擇和編輯。 DataList 控件的內容可以通過使用模板操控。下表列出了支持的模板。

ItemTemplate為默認模版,如果綁定了數據,則在該模版中編輯顯示項目。

模板名稱

說明

AlternatingItemTemplate

如果已定義,則為 DataList 中的交替項提供內容和布局。如果未定義,則使用 ItemTemplate

EditItemTemplate

如果已定義,則為 DataList 中當前編輯的項提供內容和布局。如果未定義,則使用 ItemTemplate

FooterTemplate

如果已定義,則為 DataList 的腳注部分提供內容和布局。如果未定義,將不顯示腳注部分。

HeaderTemplate

如果已定義,則為 DataList 的頁眉節提供內容和布局。如果未定義,將不顯示頁眉節。

ItemTemplate

DataList 中的項提供內容和布局所要求的模板。

SelectedItemTemplate

如果已定義,則為 DataList 中當前選定項提供內容和布局。如果未定義,則使用 ItemTemplate。

SeparatorTemplate

如果已定義,則為 DataList 中各項之間的分隔符提供內容和布局。如果未定義,將不顯示分隔符。


  • 分頁顯示DataList控件中的數據

該分頁代碼頁適用於Repeater控件等其他數據類控件。頁面源代碼添加一個DataList控件(DataList1),在頁腳模版中添加翻頁控制相關按鈕。


<FooterTemplate> 
                
<%--頁腳模板--%> 
                
<table border="0" cellpadding="0" cellspacing="0" style="width: 580px"> 
                    
<tr> 
                        
<td colspan="2" style="font-size: 12px;"> 
                            
<hr /> 
                            共 
                            
<asp:Label ID="lblpc" runat="server" Text="Label"></asp:Label> 
                            頁 當前為第 
                            
<asp:Label ID="lblp" runat="server" Text="Label"></asp:Label> 
                            頁 
                            
<asp:HyperLink ID="hlfir" runat="server" Text="首頁"></asp:HyperLink> 
                            
<asp:HyperLink ID="hlp" runat="server" Text="上一頁"></asp:HyperLink> 
                            
<asp:HyperLink ID="hln" runat="server" Text="下一頁"></asp:HyperLink> 
                            
<asp:HyperLink ID="hlla" runat="server" Text="末頁"></asp:HyperLink> 
                        
</td> 
                    
</tr> 
                
</table> 
            
</FooterTemplate> 

cs代碼:


private PagedDataSource pds() 
    

       
//此處為GridView1綁定數據庫  
       SqlConnection myConn = GetConnection();  
        myConn.Open();  
        
string sqlStr = "select * from test";  
        SqlDataAdapter myDa 
= new SqlDataAdapter(sqlStr, myConn);  
        DataSet myDs 
= new DataSet();  
        myDa.Fill(myDs); 
        PagedDataSource pds 
= new PagedDataSource(); 
        
//初始化一個PagedDataSource,允許控件分頁 
        pds.DataSource = myDs.Tables[0].DefaultView; 
        
//將上面的ds轉換成標准數據視圖 
        pds.AllowPaging = true
        
//允許分頁 
        pds.PageSize = 5
        
//每頁大小為5  
        pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]); 
        
//設置當前頁 
        return pds; 
        
//將處理完畢的pds對象發出去 
    }
 
protected void DataList1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    

        
if (Request.QueryString["name"== null
        

            
if (e.Item.ItemType == ListItemType.Footer) 
            
{//判斷當前項是頁腳模板 
                int n = pds().PageCount;//將分頁總數賦給變量n 
                int i = pds().CurrentPageIndex;//將當前分頁碼賦給i  
                Label lblpc = (Label)e.Item.FindControl("lblpc"); 
                lblpc.Text 
= n.ToString(); 
                
//找到lblpc這個Label,將總頁碼賦給他 
                Label lblp = (Label)e.Item.FindControl("lblp"); 
                lblp.Text 
= Convert.ToString(pds().CurrentPageIndex + 1); 
                
//找到lblp這個Label,將當前頁碼賦給他,但是注意,因為頁碼從0開始,這里要直觀的話就得加1 
                HyperLink hlfir = (HyperLink)e.Item.FindControl("hlfir"); 
                
//這里調整為自己網頁需要到的連接 
                hlfir.NavigateUrl = "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=0"
                HyperLink hlla 
= (HyperLink)e.Item.FindControl("hlla"); 
                hlla.NavigateUrl 
= "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(n - 1); 
                
//找到表示最前頁和末頁的Label,為他們的NavigateUrl屬性賦為第0頁和最大頁碼減1 
                HyperLink hlp = (HyperLink)e.Item.FindControl("hlp"); 
                HyperLink hln 
= (HyperLink)e.Item.FindControl("hln"); 
                
//找到表示上頁和下頁這兩個控件 
                if (i <= 0
                
{//如果當前頁已經是第0頁 
                    hlp.Enabled = false
                    hlfir.Enabled 
= false
                    hln.Enabled 
= true
                }
 
                
else 
                

                    hlp.NavigateUrl 
= "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(i - 1); 
                }
 
                
if (i > n - 2
                
{//如果當前項已經是最末頁 
                    hln.Enabled = false
                    hlla.Enabled 
= false
                    hlp.Enabled 
= true
                }
 
                
else 
                

                    hln.NavigateUrl 
= "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(i + 1); 
                }
 
            }
 
        }
 
    }

顯示、編輯、更新數據

在DataList模版中添加LinkButton控件,並為其綁定數據,設置CommandName屬性和Click事件來實現對數據的顯示、編輯、更新、取消。在DataList中CommandName接受默認值為:Edit、Delete、Update、Cancel。如果值不為上述4種,則在ItemCommand中自行定義。
在頁面源代碼中添加DataList控件(DataList1),設置了ItemTemplate、EditItemTemplate、SelectedItemTemplate三種模版,分別對應默認顯示模版,編輯模版和選擇模版。


<asp:DataList ID="DataList1" runat="server" DataKeyField="Id" DataSourceID="AccessDataSource1" 
        OnItemCommand
="DataList1_ItemCommand" OnCancelCommand="DataList1_CancelCommand" 
        OnUpdateCommand
="DataList1_UpdateCommand" OnEditCommand="DataList1_EditCommand"> 
        
<EditItemTemplate> 
            //用於錄入name字段的值;點擊Button_up,完成修改;點擊Button_ca,退出EditItemTemplate模版,回到ItemTemplate模版。 
            
<asp:TextBox ID="TextBox_name" runat="server"></asp:TextBox> 
            
<asp:Button ID="Button_up" runat="server" CommandName="update" Text="更新" /> 
            
<asp:Button ID="Button_ca" runat="server" CommandName="cancel" Text="取消" /> 
        
</EditItemTemplate> 
        
<SelectedItemTemplate> 
            //顯示選中行的詳細信息 
            Id: 
            
<asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' /> 
            
<br /> 
            Name: 
            
<asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' /> 
            
<br /> 
        
</SelectedItemTemplate> 
        
<ItemTemplate>  
            //默認顯示數據庫中id字段值,點擊LinkButton_se,顯示詳細信息SelectedItemTemplate模版,進入;點擊Button_ed,進入EditItemTemplate模版。 
             Id: 
<asp:LinkButton ID="LinkButton_se" runat="server" CommandName="select" Text='<%# Eval("Id") %>' OnClick="LinkButton2_Click"> 
           
</asp:LinkButton><asp:Button ID="Button_ed" runat="server" CommandName="edit" Text="編輯" /> 
        
</ItemTemplate> 
    
</asp:DataList> 

cs代碼:


protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
    

        
if (e.CommandName == "select"
        

            DataList1.SelectedIndex 
= e.Item.ItemIndex; 
            DataList1.DataBind(); 
        }
 
    }
 
    
protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e) 
    

            DataList1.SelectedIndex 
= -1
            DataList1.DataBind(); 
    }
 
    
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) 
    

       
//取得編輯行的關鍵字段的值 
        string id = DataList1.DataKeys[e.Item.ItemIndex].ToString(); 
        
//取得文本框中輸入的內容 
        string name = ((TextBox)e.Item.FindControl("TextBox_name")).Text; 
        
//更新數據庫 
        string sql = "update test set name='" + name + "'"
        
string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString(); 
        SqlConnection myConn 
= new SqlConnection(myStr); 
        myConn.Open(); 
        
string sqlStr = "select * from test"
        SqlCommand myCmd 
= new SqlCommand(sqlStr, myConn); 
        myCmd.ExecuteNonQuery(); 
        myCmd.Dispose(); 
        myConn.Close(); 
        
//取消編輯狀態 
        DataList1.SelectedIndex = -1
        DataList1.DataBind(); 
    }
 
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e) 
    

        DataList1.SelectedIndex 
= e.Item.ItemIndex; 
        DataList1.DataBind(); 
    }
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM