2
0
Эх сурвалжийг харах

2010-05-18 Marek Habersack <[email protected]>

	* ListView.cs: if data source has pageable data, get total count
	from the source's DataSourceCount property. Fixes bug #604053

svn path=/trunk/mcs/; revision=157470
Marek Habersack 15 жил өмнө
parent
commit
1e4a6be22d

+ 1 - 0
mcs/class/System.Web.Extensions/System.Web.Extensions_test.dll.sources

@@ -36,6 +36,7 @@
 ../../System.Web/Test/mainsoft/NunitWeb/NunitWeb/WebTestResourcesSetupAttribute.cs
 code/Country.cs
 code/CountryCollection.cs
+code/Bug604053_DataSource.cs
 System.Web.Script.Serialization/JavaScriptSerializerTest.cs
 System.Web.Script.Services/ProxyGeneratorTest.cs
 System.Web.UI/ScriptBehaviorDescriptorTest.cs

+ 5 - 0
mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog

@@ -1,3 +1,8 @@
+2010-05-18  Marek Habersack  <[email protected]>
+
+	* ListView.cs: if data source has pageable data, get total count
+	from the source's DataSourceCount property. Fixes bug #604053
+
 2009-12-15  Marek Habersack  <[email protected]>
 
 	* NextPreviousPagerField.cs: HandleEvent doesn't call

+ 2 - 2
mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ListView.cs

@@ -4,7 +4,7 @@
 // Authors:
 //   Marek Habersack ([email protected])
 //
-// (C) 2007-2008 Novell, Inc
+// (C) 2007-2010 Novell, Inc
 //
 
 //
@@ -845,7 +845,7 @@ namespace System.Web.UI.WebControls
 				if (haveDataToPage) {
 					// Data source has paged data for us, so we must use its total row
 					// count
-					_totalRowCount = pagedDataSource.TotalRowCount;
+					_totalRowCount = pagedDataSource.DataSourceCount;
 				} else if (!emptySet && _totalRowCount > -1)
 					_totalRowCount = retList.Count;
 				else if (_totalRowCount > -1)

+ 89 - 0
mcs/class/System.Web.Extensions/Test/System.Web.UI.WebControls/ListViewTest.cs

@@ -375,10 +375,12 @@ namespace MonoTests.System.Web.UI.WebControls
                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTest.aspx", "ListViewTest.aspx");
 			WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTotalRowCount_Bug535701_1.aspx", "ListViewTotalRowCount_Bug535701_1.aspx");
 			WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTotalRowCount_Bug535701_2.aspx", "ListViewTotalRowCount_Bug535701_2.aspx");
+			WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTotalRowCount_Bug604053.aspx", "ListViewTotalRowCount_Bug604053.aspx");
 #else
                         WebTest.CopyResource (GetType (), "ListViewTest.aspx", "ListViewTest.aspx");
 			WebTest.CopyResource (GetType (), "ListViewTotalRowCount_Bug535701_1.aspx", "ListViewTotalRowCount_Bug535701_1.aspx");
 			WebTest.CopyResource (GetType (), "ListViewTotalRowCount_Bug535701_2.aspx", "ListViewTotalRowCount_Bug535701_2.aspx");
+			WebTest.CopyResource (GetType (), "ListViewTotalRowCount_Bug604053.aspx", "ListViewTotalRowCount_Bug604053.aspx");
 #endif
                 }
 		
@@ -1275,6 +1277,93 @@ namespace MonoTests.System.Web.UI.WebControls
 
 			Assert.AreEqual (originalHtml_2, renderedHtml, "#A2");
 		}
+
+		[Test (Description="Bug #604053")]
+		public void Bug_604053 ()
+		{
+			string originalHtml = @"<span id=""Bug604053ListView1""><table id=""Bug604053ListView1_itemPlaceholderContainer"" border=""0"" style=""""><tr style=""""><th>
+											M1</th><th>
+											M2</th>
+	</tr>
+					<tr style="""">
+						<td>
+							<span id=""Bug604053ListView1_ctl10_M1Label"">0</span>
+						</td>
+						<td>
+							<span id=""Bug604053ListView1_ctl10_M2Label"">0</span>
+						</td>
+					</tr>
+				
+		
+					<tr style="""">
+						<td>
+							<span id=""Bug604053ListView1_ctl12_M1Label"">1</span>
+						</td>
+						<td>
+							<span id=""Bug604053ListView1_ctl12_M2Label"">1</span>
+						</td>
+					</tr>
+				
+
+
+</table>
+
+					<table><tr><td>
+								
+							</td>
+	</tr><tr><td style="""">
+								<span id=""DataPager1""><input type=""submit"" name=""Bug604053ListView1$DataPager1$ctl00$ctl00"" value=""First"" disabled=""disabled"" />&nbsp;<span>1</span>&nbsp;<a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl01','')"">2</a>&nbsp;<a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl02','')"">3</a>&nbsp;<a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl03','')"">4</a>&nbsp;<a href=""javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl04','')"">5</a>&nbsp;<input type=""submit"" name=""Bug604053ListView1$DataPager1$ctl02$ctl00"" value=""Last"" />&nbsp;</span>
+							</td>
+	</tr>
+
+</table>
+
+				</span>
+			<span id=""Bug604053ListView2""><table id=""Bug604053ListView2_itemPlaceholderContainer"" border=""0"" style=""""><tr style=""""><th>
+											M1</th><th>
+											M2</th>
+	</tr>
+					<tr style="""">
+						<td>
+							<span id=""Bug604053ListView2_ctl10_M1Label"">0</span>
+						</td>
+						<td>
+							<span id=""Bug604053ListView2_ctl10_M2Label"">0</span>
+						</td>
+					</tr>
+				
+		
+					<tr style="""">
+						<td>
+							<span id=""Bug604053ListView2_ctl12_M1Label"">1</span>
+						</td>
+						<td>
+							<span id=""Bug604053ListView2_ctl12_M2Label"">1</span>
+						</td>
+					</tr>
+				
+
+
+</table>
+
+					<table><tr><td>
+								
+							</td>
+	</tr><tr><td style="""">
+								<span id=""DataPager1""><input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl00"" value=""First"" disabled=""disabled"" />&nbsp;<input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl01"" value=""Previous"" disabled=""disabled"" />&nbsp;<input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl02"" value=""Next"" />&nbsp;<input type=""submit"" name=""Bug604053ListView2$DataPager1$ctl00$ctl03"" value=""Last"" />&nbsp;</span>
+							</td>
+	</tr>
+
+</table>
+
+				</span>";
+			
+ 			WebTest t = new WebTest ("ListViewTotalRowCount_Bug604053.aspx");
+			string pageHtml = t.Run ();
+			string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
+			
+			Assert.AreEqual (originalHtml, renderedHtml, "#A1");
+		}
 	}
 }
 #endif

+ 26 - 0
mcs/class/System.Web.Extensions/Test/code/Bug604053_DataSource.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.ComponentModel;
+
+namespace Bug604053.Prueba {
+	public class Data {
+		public int M1 { get; set; }
+		public string M2 { get; set; }
+		public Data(int m1, string m2) {
+			M1 = m1;
+			M2 = m2;
+		}
+	}
+	[DataObject(true)]
+	public class DataSource {
+		public Data[] Retrieve() {
+			Data[] data = new Data[10];
+			for(int i = 0; i < 10; i++) {
+				data[i] = new Data(i, i.ToString());
+			}
+			return data;
+		}
+	}
+}

+ 221 - 0
mcs/class/System.Web.Extensions/Test/resources/ListViewTotalRowCount_Bug604053.aspx

@@ -0,0 +1,221 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
+
+<!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 runat="server">
+    <title></title>
+</head>
+<body>
+    <form id="form1" runat="server">
+    <div>
+			<%= MonoTests.stand_alone.WebHarness.HtmlDiff.BEGIN_TAG %><asp:ListView ID="Bug604053ListView1" runat="server" DataSourceID="ObjectDataSource1">
+				<ItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Label ID="M1Label" runat="server" Text='<%# Eval("M1") %>' />
+						</td>
+						<td>
+							<asp:Label ID="M2Label" runat="server" Text='<%# Eval("M2") %>' />
+						</td>
+					</tr>
+				</ItemTemplate>
+				<AlternatingItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Label ID="M1Label" runat="server" Text='<%# Eval("M1") %>' />
+						</td>
+						<td>
+							<asp:Label ID="M2Label" runat="server" Text='<%# Eval("M2") %>' />
+						</td>
+					</tr>
+				</AlternatingItemTemplate>
+				<EmptyDataTemplate>
+					<table runat="server" style="">
+						<tr>
+							<td>
+								No data was returned.</td>
+						</tr>
+					</table>
+				</EmptyDataTemplate>
+				<InsertItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
+								Text="Insert" />
+							<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
+								Text="Clear" />
+						</td>
+						<td>
+							<asp:TextBox ID="M1TextBox" runat="server" Text='<%# Bind("M1") %>' />
+						</td>
+						<td>
+							<asp:TextBox ID="M2TextBox" runat="server" Text='<%# Bind("M2") %>' />
+						</td>
+					</tr>
+				</InsertItemTemplate>
+				<LayoutTemplate>
+					<table runat="server">
+						<tr runat="server">
+							<td runat="server">
+								<table ID="itemPlaceholderContainer" runat="server" border="0" style="">
+									<tr runat="server" style="">
+										<th runat="server">
+											M1</th>
+										<th runat="server">
+											M2</th>
+									</tr>
+									<tr ID="itemPlaceholder" runat="server">
+									</tr>
+								</table>
+							</td>
+						</tr>
+						<tr runat="server">
+							<td runat="server" style="">
+								<asp:DataPager ID="DataPager1" runat="server" PageSize="2">
+									<Fields>
+										<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
+											ShowNextPageButton="False" ShowPreviousPageButton="False" />
+										<asp:NumericPagerField />
+										<asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" 
+											ShowNextPageButton="False" ShowPreviousPageButton="False" />
+									</Fields>
+								</asp:DataPager>
+							</td>
+						</tr>
+					</table>
+				</LayoutTemplate>
+				<EditItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
+								Text="Update" />
+							<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
+								Text="Cancel" />
+						</td>
+						<td>
+							<asp:TextBox ID="M1TextBox" runat="server" Text='<%# Bind("M1") %>' />
+						</td>
+						<td>
+							<asp:TextBox ID="M2TextBox" runat="server" Text='<%# Bind("M2") %>' />
+						</td>
+					</tr>
+				</EditItemTemplate>
+				<SelectedItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Label ID="M1Label" runat="server" Text='<%# Eval("M1") %>' />
+						</td>
+						<td>
+							<asp:Label ID="M2Label" runat="server" Text='<%# Eval("M2") %>' />
+						</td>
+					</tr>
+				</SelectedItemTemplate>
+			</asp:ListView>
+			<asp:ListView ID="Bug604053ListView2" runat="server" DataSourceID="ObjectDataSource1">
+				<ItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Label ID="M1Label" runat="server" Text='<%# Eval("M1") %>' />
+						</td>
+						<td>
+							<asp:Label ID="M2Label" runat="server" Text='<%# Eval("M2") %>' />
+						</td>
+					</tr>
+				</ItemTemplate>
+				<AlternatingItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Label ID="M1Label" runat="server" Text='<%# Eval("M1") %>' />
+						</td>
+						<td>
+							<asp:Label ID="M2Label" runat="server" Text='<%# Eval("M2") %>' />
+						</td>
+					</tr>
+				</AlternatingItemTemplate>
+				<EmptyDataTemplate>
+					<table runat="server" style="">
+						<tr>
+							<td>
+								No data was returned.</td>
+						</tr>
+					</table>
+				</EmptyDataTemplate>
+				<InsertItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Button ID="InsertButton" runat="server" CommandName="Insert" 
+								Text="Insert" />
+							<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
+								Text="Clear" />
+						</td>
+						<td>
+							<asp:TextBox ID="M1TextBox" runat="server" Text='<%# Bind("M1") %>' />
+						</td>
+						<td>
+							<asp:TextBox ID="M2TextBox" runat="server" Text='<%# Bind("M2") %>' />
+						</td>
+					</tr>
+				</InsertItemTemplate>
+				<LayoutTemplate>
+					<table runat="server">
+						<tr runat="server">
+							<td runat="server">
+								<table ID="itemPlaceholderContainer" runat="server" border="0" style="">
+									<tr runat="server" style="">
+										<th runat="server">
+											M1</th>
+										<th runat="server">
+											M2</th>
+									</tr>
+									<tr ID="itemPlaceholder" runat="server">
+									</tr>
+								</table>
+							</td>
+						</tr>
+						<tr runat="server">
+							<td runat="server" style="">
+								<asp:DataPager ID="DataPager1" runat="server" PageSize="2">
+									<Fields>
+										<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
+											ShowLastPageButton="True" />
+									</Fields>
+								</asp:DataPager>
+							</td>
+						</tr>
+					</table>
+				</LayoutTemplate>
+				<EditItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
+								Text="Update" />
+							<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
+								Text="Cancel" />
+						</td>
+						<td>
+							<asp:TextBox ID="M1TextBox" runat="server" Text='<%# Bind("M1") %>' />
+						</td>
+						<td>
+							<asp:TextBox ID="M2TextBox" runat="server" Text='<%# Bind("M2") %>' />
+						</td>
+					</tr>
+				</EditItemTemplate>
+				<SelectedItemTemplate>
+					<tr style="">
+						<td>
+							<asp:Label ID="M1Label" runat="server" Text='<%# Eval("M1") %>' />
+						</td>
+						<td>
+							<asp:Label ID="M2Label" runat="server" Text='<%# Eval("M2") %>' />
+						</td>
+					</tr>
+				</SelectedItemTemplate>
+			</asp:ListView><%= MonoTests.stand_alone.WebHarness.HtmlDiff.END_TAG %>
+			<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
+				OldValuesParameterFormatString="original_{0}" SelectMethod="Retrieve" 
+				TypeName="Bug604053.Prueba.DataSource"></asp:ObjectDataSource>
+    </div>
+    </form>
+</body>
+</html>