Вставить запись в DataList - PullRequest
       22

Вставить запись в DataList

0 голосов
/ 03 февраля 2009

Я хотел бы получить предложения о том, как добавить запись в мой DataList, чтобы получить опцию «Все». Вот мой код, данные поступают из базы данных Northwind.

<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>

Я использую кнопку «Ссылка» в Списке данных для фильтрации территорий и их отображения в 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();
}

Спасибо

Ответы [ 3 ]

0 голосов
/ 03 февраля 2009

Работает со следующим SQL:

SELECT '-1' AS 'RegionID', 'All Regions' AS 'RegionDescription' 
UNION ALL SELECT [RegionID], [RegionDescription] FROM [Region]
0 голосов
/ 25 ноября 2009

Используется в раскрывающемся списке, может работать так же для списка данных

  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
0 голосов
/ 03 февраля 2009

Один из способов - ОБЪЕДИНИТЬ ВСЕ значение «Все» для запроса, извлекающего список выпадающих элементов.

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

Но если у вас много таких списков (или выпадающих списков), лучше создать собственный элемент управления, который вставит для вас запись "Все".

...