C # Отображение полной таблицы данных, а не только поиск ввода - PullRequest
3 голосов
/ 03 ноября 2011

Я использую VS2005 C # и SQL Server 2005.

В настоящее время я могу отображать данные, используя источник данных из оператора SQL SELECT * из таблицы.

Теперь я реализовал функцию поиска в моей таблице, которая будет отображать результаты поиска по мере ввода пользователя.

Однако я не могу установить отображение данных по умолчанию для отображения всех данныхпо умолчанию или когда текстовое поле поиска пусто.

Я следую этому руководству: http://www.asp.net/data-access/tutorials/displaying-data-with-the-objectdatasource-cs, и я в основном застрял в последней части, где он вставляет оператор if-else для своего списка данных, который я понятия не имею, где изменить мой: (

Ниже приведены коды и снимки экрана:

RPList.aspx.cs:

<%@ Page Language="C#" MasterPageFile="~/MainPage.master" AutoEventWireup="true" CodeFile="RPList.aspx.cs" Inherits="SimpleDisplay" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
    Role: <asp:TextBox ID="RPbyRoleTB" runat="server"></asp:TextBox>
    <asp:Button ID="RPbyRoleBtn" runat="server" Text="Show Roles & Processes" />
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:<connection> %>" SelectCommand="SELECT * FROM [RolesProcess] WHERE ([Role] = @Role)">
        <SelectParameters>
            <asp:ControlParameter ControlID="RPbyRoleTB" Name="Role" PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

<script language="javascript" type="text/javascript">
// <!CDATA[

// ]]>
</script>

    <asp:GridView ID="GridView1" runat="server" AllowSorting="True" DataSourceID="SqlDataSource1">
    </asp:GridView>
</asp:Content>

enter image description here enter image description here enter image description here

Что мне нужно сделать, чтобы при загрузке моей страницы или при пустом окне поиска по умолчанию показывались полные данные?


В соответствии с предложением Politia я попытался изменить свой запросВЫБРАТЬ [колонки] ИЗ RolesProcess WHERE (Role = @Role) ИЛИ (LEN (@Role) = 0), однако, как я уже говорил, он работает не так гладко, как я думал. Ниже приведеныскриншоты.

enter image description here enter image description here


За кодом страницы после изменения SQL-запроса:

<%@ Page Language="C#" MasterPageFile="~/MainPage.master" AutoEventWireup="true" CodeFile="RPList.aspx.cs" Inherits="SimpleDisplay" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SODConnectionString %>" SelectCommand="SELECT [columns] FROM RolesProcess WHERE (Role = @Role) OR (LEN(@Role) = 0) OR (@Role IS NULL)">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" Name="Role" PropertyName="Text" Type="String" DefaultValue="" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:TextBox ID="TextBox1"  runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" />
<script language="javascript" type="text/javascript">
// <!CDATA[

// ]]>
</script>

    <asp:GridView ID="GridView1" runat="server" AllowSorting="True" DataSourceID="SqlDataSource1">
    </asp:GridView>
</asp:Content>

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

Изображение страницы при загрузке, и даже если я нажму на кнопку, ничего не отобразится.enter image description here

1 Ответ

1 голос
/ 03 ноября 2011

Вот почему я в основном рекомендую использовать ObjectDataSource и собственный настраиваемый адаптер, который может содержать эту логику и его легче тестировать.

Тем не менее, с помощью этого метода вы должны отражать ваши пожелания в вашем запросе. Вы можете установить значение параметра по умолчанию в%, например:

<asp:ControlParameter ControlID="RPbyRoleTB" Name="Role" PropertyName="Text" DefaultValue="%" Type="String" />

Или обновите запрос, чтобы отразить пустые строки и / или нулевые значения.

SELECT *
FROM table
WHERE Role = @role
OR LEN(@role) = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...