ASP. NET C # GridView Paging - PullRequest
0 голосов
/ 29 июля 2010

Привет добрый день всем. У меня есть это веб-приложение для определенной компании. В этом веб-приложении есть часть, которая использует GridView для отображения записей из базы данных, а способ их отображения жестко запрограммирован. Я покажу свои коды ниже.

          string SQLCommand = "SELECT LastName +', ' +FirstName + ' '+MiddleInitial AS  'Name', UserName + ' 'As 'User Name', StreetAddress FROM  CustomersMaster Where LastName   Like '%"+  SearchText.Text.Trim() + "%'";

            SqlCommand com = new SqlCommand(SQLCommand, con);

            SqlDataAdapter adp = new SqlDataAdapter(com);

            DataTable tbl = new DataTable();
            adp.Fill(tbl);

            AdminViewBuyersGV.DataSource = tbl;
            AdminViewBuyersGV.DataBind();

Моя проблема в том, что я хочу использовать свойство «Paging» GridView, но когда я активировал свойство «Paging», а затем, когда я его запускаю, появляется ошибка, которая говорит: «Источник данных не поддерживает данные на стороне сервера пейджинг». Я просто хочу знать, как использовать пейджинг, когда я его уже жестко запрограммировал.

Есть ли способ, как решить мою проблему. Заранее благодарим Вас и благослови Бог! :)

Ответы [ 5 ]

1 голос
/ 29 июля 2010

Убедитесь, что вы действуете на данных ...

if (tbl.Rows.Count > 0)
{
      AdminViewBuyersGV.DataSource = tbl;
      AdminViewBuyersGV.DataBind();
}
else
 {
  // no records
 }
0 голосов
/ 08 января 2015

Он говорит, что ему не нравятся данные, которые вы связываете.Поэтому попробуйте привести в порядок данные, которые вы связываете:

AdminViewBuyersGV.DataSource = tbl.ToList();

0 голосов
/ 29 июля 2010

Хорошо, так что полный пример использования SqlDataSource (как упомянуто Кендрик ):

Сначала вам нужно собрать параметры из вашего запроса, который выглядит как выуже где-то в текстовом поле.Примерно так:

<asp:Label ID="lblLastName" runat="server" AssociatedControlID="tbLastName" Text="Last Name" ClientIDMode="Static" />
<asp:TextBox ID="tbLastName" runat="server" ClientIDMode="Static" />
<asp:Button ID="btnSearch" runat="server" ClientIDMode="Static" Text="Search" />

Теперь нам нужно вывести ваш сырой встроенный SQL из кода и перенести его в SqlDataSource.Мы также хотим избавиться от потенциальной SQL-инъекции , которая есть в вашем запросе, с помощью взамен параметризованного запроса :) Для этого нам нужно подключить наш TextBox кпараметр, но, к счастью, элементы управления DataSource позволяют нам делать это без какого-либо кода, используя SelectParameters .

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:ContactManagerConnectionString %>"    
    SelectCommand="SELECT LastName + ', ' + FirstName + ' ' + MiddleInitial AS 'Name', UserName AS 'User Name', StreetAddress FROM CustomersMaster WHERE (LastName LIKE '%' + @SearchText + '%')">
<SelectParameters>
    <asp:ControlParameter ControlID="tbLastName" ConvertEmptyStringToNull="true" 
        Name="SearchText" PropertyName="Text" DbType="String" />
</SelectParameters>
</asp:SqlDataSource>

После того, как эти две части на месте, это просто вопрос настройки вашей сеткитак, как вы хотите, и установите для свойства AllowPaging значение true.

<asp:GridView runat="server" AllowPaging="True" DataSourceID="SqlDataSource1" 
AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" 
            SortExpression="Name" />
        <asp:BoundField DataField="User Name" HeaderText="User Name" 
            SortExpression="User Name" />
        <asp:BoundField DataField="StreetAddress" HeaderText="StreetAddress" 
            SortExpression="StreetAddress" />
    </Columns>
</asp:GridView>

VOILA!

Пейджинг без кода *

* Стоит отметитьчто это довольно плохо с точки зрения оптимизации, поскольку вся работа по подкачке выполняется на веб-сервере.Чтобы действительно сделать это эффективным, вы бы хотели использовать некоторые страницы на уровне базы данных.В противном случае вы будете возвращать каждую запись каждый раз.

0 голосов
/ 29 июля 2010

Если у вас нет веских причин для привязки вашего источника данных в коде, вы можете захотеть использовать элемент управления SqlDataSource на странице .aspx. Вы можете дать ему параметр (который безопаснее, чем создавать строку SQL таким, какой вы есть), и он должен поддерживать подкачку из коробки ...

0 голосов
/ 29 июля 2010

Вы написали код для подпрограммы AdminViewBuyersGV_PageIndexChanging?

...