Быстрая фильтрация через SqlDatasource

by AigizK 9. сентября 2009 08:07

Представьте такую ситуацию: на странице есть DropDownList и GridView. Изначально у DropDownList ничего не указано.В таком случае надо отобразить все значения из таблицы в GridView, а если в DropDownListвыбрано какое нибудь значение, то GridView надо отфильтровать это значение. Для SqlDatasource это можно решить так:

<asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:InlineConnectionString %>"
        SelectCommand="SELECT Id,Name,Activate,Method,Type,TypeId FROM [Payment] where (ISNULL(TypeId,-1) = ISNULL(ISNULL(@TypeId, TypeId),-1)) ORDER BY [CreateDate] desc"
        CancelSelectOnNullParameter="false">

Два момента:

1. (ISNULL(TypeId,-1) = ISNULL(ISNULL(@TypeId, TypeId),-1)) - тут получится условие TypeId=TypeId,когда в DropDownList не указано значение и TypeId=@TypeId, когда указано

2. CancelSelectOnNullParameter="false" - когда все параметры равны null, чтоб select все равно выполнился

 

Полный код выглядит так:

<div>
        <asp:DropDownList ID="drdType" runat="server" AutoPostBack="true"
            OnSelectedIndexChanged="UpdateGrid">
        </asp:DropDownList>
    </div>
    <asp:GridView ID="grid" runat="server" AutoGenerateColumns="false" AllowPaging="true"
        PageSize="20" DataSourceID="SqlDataSource">
        <Columns>
            <asp:BoundField DataField="Name" HeaderText="Name" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:InlineConnectionString %>"
        SelectCommand="SELECT Id,Name,TypeId FROM [Table] where (ISNULL(TypeId,-1) = ISNULL(ISNULL(@TypeId, TypeId),-1))"
        CancelSelectOnNullParameter="false">
        <SelectParameters>
            <asp:ControlParameter ControlID="drdType" Name="TypeId" PropertyName="SelectedValue" DbType="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

.NET

Комментарии закрыты

О нас

Это блог компании Инлайн. Мы занимаемся разработкой сайтов, корпоративных порталов и корпоративных информационных систем на основе новейших технологии Microsoft  - ASP.NET, SharePoint и Silverlight. А в этом блоге мы размещаем самые последние новости в области разработке для web.

Облако тегов