2009-02-02 38 views
0

我想建議如何將記錄注入到我的DataList中以提供「全部」選項。這裏是我的代碼,來自Northwind數據庫的數據。注入DataList的記錄

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" 
     RepeatLayout="Flow" ShowFooter="False" ShowHeader="False" 
     RepeatDirection="Horizontal" 
     onitemcommand="DataList1_ItemCommand"> 
     <ItemStyle CssClass="datalist" /> 
    <ItemTemplate> 
     <%#(((DataListItem)Container).ItemIndex+1).ToString() %> 
     <asp:LinkButton ID="lbtnRegion" runat="server" 
      Text='<%# Eval("RegionDescription").ToString().Trim() %>' 
     CommandName='<%# DataBinder.Eval(Container.DataItem,"RegionID")%>' />      
    </ItemTemplate>  
    </asp:DataList> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
    SelectCommand="SELECT [RegionID], [RegionDescription] FROM [Region]" 
     ondatabinding="SqlDataSource1_Databinding" 
    onselected="SqlDataSource1_Selected"> 
</asp:SqlDataSource> 

我正在使用Datalist中的鏈接按鈕來過濾區域並將它們顯示在GridView中。 我想要做的是在數據綁定過程中的一些,在DataList中添加一個項目作爲ALL選項,任何建議,將不勝感激。

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    LinkButton lbtn; 

    foreach (DataListItem dli in DataList1.Items) 
    { 
     lbtn = (LinkButton)dli.FindControl("lbtnRegion"); 
     if (lbtn != null) 
      lbtn.ForeColor = System.Drawing.Color.White; 
    } 
    string command = e.CommandName; 
    lbtn = (LinkButton)e.Item.FindControl("lbtnRegion"); 
    if (lbtn != null) 
     lbtn.ForeColor = System.Drawing.Color.YellowGreen; 

    DataView dv = GetData(ref command); // Pass the RegionId 
    gvTerritory.DataSource = dv; 
    gvTerritory.DataBind(); 
} 

感謝

回答

0

一種方法是UNION ALL一個「全部」值查詢取下拉項目列表。

SELECT 'All', 'All Regions' 
UNION ALL 
SELECT [RegionID], [RegionDescription] FROM [Region] 

但是,如果你有很多的列表(或下拉菜單)是這樣的,它是更好的做法是創建一個注入「全部」記錄你的自定義控件。

+0

偉大的建議,謝謝。 – Picflight 2009-02-03 00:15:17

0

它曾與下面的SQL:

SELECT '-1' AS 'RegionID', 'All Regions' AS 'RegionDescription' 
UNION ALL SELECT [RegionID], [RegionDescription] FROM [Region] 
0

使用這種上下拉,可以工作在同一個DataList

Protected Sub ddlDataSources_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlDataSources.DataBound 
    ddlDataSources.Items.Insert(0, New ListItem("All Data Sources", 0)) 
    End Sub