[英]ASP. NET C# GridView Paging
大家好。 我有某個公司的此Web應用程序。 在此Web應用程序中,有一部分使用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();
我的問題是我想使用GridView的“ Paging”屬性,但是當我激活“ Paging”屬性然后運行它時,出現一個錯誤,提示“數據源不支持服務器端數據分頁”。 我只想知道已經對它進行硬編碼時如何使用分頁。
有沒有辦法解決我的問題。 在此先感謝您,上帝保佑! :)
確保您正在處理數據...
if (tbl.Rows.Count > 0)
{
AdminViewBuyersGV.DataSource = tbl;
AdminViewBuyersGV.DataBind();
}
else
{
// no records
}
它說它不喜歡您要綁定的數據。 因此,請嘗試整理要綁定的數據:
AdminViewBuyersGV.DataSource = tbl.ToList();
您是否為AdminViewBuyersGV_PageIndexChanging
例程編寫代碼?
除非有充分的理由將數據源綁定到代碼中,否則您可能需要查看在.aspx頁中使用SqlDataSource控件。 您可以給它提供一個參數(比您以自己的方式構建sql字符串更安全),它應該支持開箱即用的分頁...
好的,使用SqlDataSource的完整示例(如Kendrick所述):
首先,您需要從查詢中收集參數,好像您已經在某個地方的文本框中一樣。 像這樣:
<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" />
現在,我們需要從原始代碼中刪除Raw Inline 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>
無代碼分頁*
*值得注意的是,這在優化方面非常差,因為所有分頁工作都是在Web服務器上完成的。 為了真正提高效率,您需要在數據庫級別使用一些分頁。 否則,您將每次帶回每條記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.