■74111 / inTopicNo.1) |
GridView最終ページでポストバック時に余計な行が表示 |
□投稿者/ めるぽん (1回)-(2014/12/01(Mon) 13:58:44)
|
分類:[.NET 全般]
2014/12/01(Mon) 14:13:39 編集(投稿者)
タイトルが入りきらなかったため再掲します タイトル「GridView最終ページでポストバック時に余計な行が表示される」
こんにちは、C#.net , .netFramework4.5 , IE8で開発をしています。
GridViewの最終ページにて最大行数表示されていない状態(例:GridViewの1ページの最大件数を10行設定、データ件数15件の2ページ目)にて GridView内のアイテムでポストバックをした際に、余計な空白行が出力されてしまうのですが、どういった理由なのかお分かりの方、ご教示いただけますでしょうか。
よろしくお願いします。
以下ソースです。
--GridPagerTest.aspx--
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridPagerTest.aspx.cs" Inherits="GridTest.GridPagerTest" EnableEventValidation="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridTest" runat="server" AutoGenerateColumns="False" AllowPaging="true" AllowCustomPaging="true" OnPageIndexChanging = "searchResults_PageIndexChanging" > <PagerSettings Position="TopAndBottom" Visible="true" /> <Columns> <asp:BoundField HeaderText="No" DataField="No" /> <asp:TemplateField HeaderText="ボタン列"> <ItemTemplate> <asp:Button ID="btnTest" runat="server" Width="50px" CausesValidation="false" CommandName="Button" Text="Test" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="名前" DataField="Name" /> </Columns> </asp:GridView> </div> </form> </body> </html>
--GridPagerTest.aspx.cs--
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Reflection; using System.Linq.Expressions;
namespace GridTest { public partial class GridPagerTest : System.Web.UI.Page { private const int dispCount = 10;
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable table = GetDataSource(); this.GridTest.VirtualItemCount = table.Rows.Count; this.GridTest.PageIndex = 0; this.GridTest.PageSize = dispCount; this.GridTest.DataSource = table; this.GridTest.DataBind();
} }
#region GridView PageIndexChangingイベント /// <summary> /// GridView PageIndexChangingイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void searchResults_PageIndexChanging(object sender, GridViewPageEventArgs e) { DataTable table = GetDataSource(); int iTableCount = table.Rows.Count; table = table.AsEnumerable().Skip(e.NewPageIndex * dispCount).Take(dispCount).CopyToDataTable(); this.GridTest.VirtualItemCount = iTableCount; this.GridTest.PageIndex = e.NewPageIndex; this.GridTest.PageSize = dispCount;
//this.GridTest.PageSize = table.Rows.Count; this.GridTest.DataSource = table; this.GridTest.DataBind(); } #endregion
public DataTable GetDataSource() { DataTable table = new DataTable(); table.Columns.Add("No"); table.Columns.Add("Name");
for (int i = 1; i < 15; i++) { DataRow row = table.NewRow(); row["No"] = i; row["Name"] = "aaaa"; table.Rows.Add(row); }
return table; }
} }
|
|