我正在尝试将GridView
转换为ListView
,以便让我更好地控制表格显示。
GridView
正常工作,如此处所定义并正确显示数据。
<asp:GridView ID="gvService" runat="server"
AllowPaging="True"
AutoGenerateColumns="False"
DataKeyNames="ID"
DataSourceID="objService">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="ServiceType" HeaderText="Type" />
</Columns>
</asp:GridView>
当我将其转换为ListView
时,根本不会向页面呈现HTML。我甚至将它们并排放置,GridView
有效,但ListView
不显示。
<asp:ListView ID="lvService" runat="server"
DataSourceID="objService">
<LayoutTemplate>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Type</th>
</tr>
<tr id="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("ID") %></td>
<td><%# Eval("Name") %></td>
<td><%# Eval("ServiceType") %></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td><%# Eval("ID") %></td>
<td><%# Eval("Name") %></td>
<td><%# Eval("ServiceType") %></td>
</tr>
</AlternatingItemTemplate>
</asp:ListView>
以下是ObjectDataSource
<asp:ObjectDataSource ID="objService" runat="server"
EnablePaging="true"
TypeName="My.Data.DataSource.ServiceDataSource" DataObjectTypeName="My.Data.Service.ServiceSearch"
SelectMethod="Search"
SelectCountMethod="SearchCount">
<SelectParameters>
<asp:ControlParameter ControlID="tbSearch" Name="Search" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
我觉得我在这里缺少一些基本的东西。有关为什么GridView
填充但ListView
不填充的任何想法?
我是否需要在后面的代码中手动 DataBind()控件?
答案 0 :(得分:3)
这里的问题似乎与ListView有关。由于您已为ObjectDataSource设置了EnablePaging="true"
,因此您的ObjectDataSource
始终会查找包含两个参数的Select
方法:MaximumRows
&amp; startRowIndex
。
startRowIndex
会根据您的MaximumRows
设置自动递增。
如果使用GridView属性MaximumRows
指定网格视图PageSize
。如果您未指定此项,10
将使用默认值MaximumRows
。
如果你的ListView
没有PageSize
这样的设置,那么任何默认值都没有选项。如果您在列表视图绑定完成后检查Select
方法,则会看到MaximumRows
的值等于-1
。
因此,您需要应用的更正是在.aspx文件中使用DataPager,如下所示。请注意,PagedControlID
属性设置为列表视图的ID。
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="lvService"
PageSize="20">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
同样,PageSize
属性指定MaximumRows
参数值。