I've read so many articles on listviews and datapagers that I'm seriously confused. I've gotten my insert, edit and delete commands working but my datapager reloads the page without actually paging. I'm getting a Visual Studio 2010 error I don't understand
when I try to build. The error hits in the Private Sub lvBuilder_PagePropertiesChanging(sender As Object, e As PagePropertiesChangingEventArgs) Handles lvBuilder.PagePropertiesChanging.
I'm posting the aspx and VB code. please help. The error is:
'Error 1 'System.Web.UI.WebControls.ListView.Protected Overridable Sub SetPageProperties(startRowIndex As Integer, maximumRows As Integer, databind As Boolean)' is not accessible in this context because it is 'Protected'. C:\Inetpub\wwwroot\TBIN2012\TBIN2012\BuilderMaintenance.aspx.vb
87 3 TBIN2012
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
Public Class BuilderMaintenance
Inherits System.Web.UI.Page
Dim da As OracleDataAdapter
Dim dtBuilder As DataTable
Dim cn As OracleConnection
Dim cmd As OracleCommand
Dim sSQL As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
cn = New OracleConnection("Data Source=" & HttpContext.Current.Application("sDataBase") & "; User Id=" & HttpContext.Current.Session("UserID") & "; Password=" & HttpContext.Current.Session("Password") & "; Pooling=True;")
If Not IsPostBack Then
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End If
End Sub
Public Function GetBuilder() As DataTable
sSQL = "Select BuilderID_PK, BuilderName from App_TBIN.Builder Order By BuilderName"
da = New OracleDataAdapter(sSQL, cn)
dtBuilder = New DataTable
da.Fill(dtBuilder)
Return dtBuilder
End Function
Protected Sub lvBuilder_ItemEditing(sender As Object, e As ListViewEditEventArgs)
lvBuilder.EditIndex = e.NewEditIndex
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemUpdating(sender As Object, e As ListViewUpdateEventArgs)
Dim BuilderID_PK As Integer = 0
Dim BuilderName As String = ""
Dim hBuilderPK As HiddenField = TryCast(lvBuilder.Items(e.ItemIndex).FindControl("hBuilderID_PK"), HiddenField)
If hBuilderPK IsNot Nothing Then
BuilderID_PK = hBuilderPK.Value
End If
Dim txtBuilderName As TextBox = TryCast(lvBuilder.Items(e.ItemIndex).FindControl("txtBuilderName"), TextBox)
If txtBuilderName IsNot Nothing Then
BuilderName = txtBuilderName.Text
End If
sSQL = "UPDATE App_TBIN.Builder SET BuilderName = '" & BuilderName & "' WHERE BuilderID_PK = '" & BuilderID_PK & "'"
cn.Open()
cmd = New OracleCommand(sSQL, cn)
cmd.ExecuteNonQuery()
cn.Close()
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemCanceling(sender As Object, e As ListViewCancelEventArgs)
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemDeleting(sender As Object, e As ListViewDeleteEventArgs)
Dim BuilderID_PK As Integer = 0
Dim hBuilderPK As HiddenField = TryCast(lvBuilder.Items(e.ItemIndex).FindControl("hBuilderID_PK"), HiddenField)
If hBuilderPK IsNot Nothing Then
BuilderID_PK = hBuilderPK.Value
End If
sSQL = "Delete from App_TBIN.Builder WHERE BuilderID_PK = '" & BuilderID_PK & "'"
cn.Open()
cmd = New OracleCommand(sSQL, cn)
cmd.ExecuteNonQuery()
cn.Close()
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemInserting(sender As Object, e As ListViewInsertEventArgs)
Dim BuilderName As String = ""
Dim BuilderID_PK As Integer = 0
Dim txtBuilderName As TextBox = TryCast(e.Item.FindControl("txtBuilderName"), TextBox)
If txtBuilderName IsNot Nothing Then
BuilderName = txtBuilderName.Text
End If
sSQL = "INSERT INTO App_TBIN.Builder (BuilderName) VALUES ('" & BuilderName & "')"
cn.Open()
cmd = New OracleCommand(sSQL, cn)
cmd.ExecuteNonQuery()
cn.Close()
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Private Sub lvBuilder_PagePropertiesChanging(sender As Object, e As PagePropertiesChangingEventArgs) Handles lvBuilder.PagePropertiesChanging
lvBuilder.SetPageProperties(e.StartRowIndex, e.MaximumRows, False) 'Line 87 throws the error!!!
lvBuilder.DataBind() 'rebind List View
End Sub
I made the change you suggested and it killed the page. The error is below.
Compilation Error
Description:
An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30456: 'lvBuilder_PagePropertiesChanging' is not a member of 'ASP.buildermaintenance_aspx'.
Source Error:
Line 3: </asp:Content>
Line 4: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
Line 5: <asp:ListView ID="lvBuilder" DataKeyNames="BuilderID_PK" runat="server" onitemediting="lvBuilder_ItemEditing" onitemupdating="lvBuilder_ItemUpdating" OnPagePropertiesChanging="lvBuilder_PagePropertiesChanging" Line 6: onitemcanceling="lvBuilder_ItemCanceling" onitemdeleting="lvBuilder_ItemDeleting" InsertItemPosition="LastItem" oniteminserting="lvBuilder_ItemInserting">
Line 7: <LayoutTemplate>
Ok this is just plain odd. I undid the change you suggested and it still gave the same error. I went to my code behind and changed the lvBuilder_PagePropertiesChanging
from protected to private and then back to protected. Now it works completely. So essentially the original code was good and the change didn't actually break anything. The compiler just had a bout of stupid but it is feeling much better now. Thanks for
the help.
I
need a way to mark this as completed but not answered. I don't need any more help but I have no idea what caused the issue in the first place.
kraznodar
Contributor
3332 Points
881 Posts
DataPager in listview not paging
Dec 05, 2012 06:17 PM|LINK
Hi everyone,
I've read so many articles on listviews and datapagers that I'm seriously confused. I've gotten my insert, edit and delete commands working but my datapager reloads the page without actually paging. I'm getting a Visual Studio 2010 error I don't understand when I try to build. The error hits in the Private Sub lvBuilder_PagePropertiesChanging(sender As Object, e As PagePropertiesChangingEventArgs) Handles lvBuilder.PagePropertiesChanging.
I'm posting the aspx and VB code. please help. The error is:
'Error 1 'System.Web.UI.WebControls.ListView.Protected Overridable Sub SetPageProperties(startRowIndex As Integer, maximumRows As Integer, databind As Boolean)' is not accessible in this context because it is 'Protected'. C:\Inetpub\wwwroot\TBIN2012\TBIN2012\BuilderMaintenance.aspx.vb 87 3 TBIN2012
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/TBIN.Master" CodeBehind="BuilderMaintenance.aspx.vb" Inherits="TBIN2012.BuilderMaintenance" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:ListView ID="lvBuilder" DataKeyNames="BuilderID_PK" runat="server" onitemediting="lvBuilder_ItemEditing" onitemupdating="lvBuilder_ItemUpdating" OnPagePropertiesChanging="lvBuilder_PagePropertiesChanging"
onitemcanceling="lvBuilder_ItemCanceling" onitemdeleting="lvBuilder_ItemDeleting" InsertItemPosition="LastItem" oniteminserting="lvBuilder_ItemInserting">
<LayoutTemplate>
<table style="width:600px; border:1 collapse black;" runat="server" id="tblBuilders">
<tr runat="server">
<th runat="server"> </th>
<th runat="server">Builder Name</th>
<th runat="server">Action</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
<asp:DataPager runat="server" ID="BuilderDataPager" PageSize="20" PagedControlID="lvBuilder" QueryStringField="page">
<Fields>
<asp:NumericPagerField />
<asp:NextPreviousPagerField ShowFirstPageButton="True" ShowLastPageButton="True"
FirstPageText="|<< " LastPageText=" >>|" NextPageText=" > " PreviousPageText=" < " />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<tr id="Tr1" runat="server">
<td>
<asp:HiddenField ID="hBuilderID_PK" runat="server" Value='<%#Eval("BuilderID_PK") %>' />
</td>
<td style="vertical-align:top">
<asp:Label ID="lblBuilderName" runat="Server" Text='<%#Eval("BuilderName") %>' />
</td>
<td>
<asp:LinkButton ID="EditButton" runat="Server" Text="Edit" CommandName="Edit" />
<asp:LinkButton ID="DeleteButton" runat="Server" Text="Delete" CommandName="Delete" />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color:#BBBBBB;" runat="server">
<td>
<asp:HiddenField ID="hBuilderID_PK" runat="server" Value='<%#Eval("BuilderID_PK") %>' />
</td>
<td style="vertical-align:top">
<asp:Label ID="lblBuilderName" runat="Server" Text='<%#Eval("BuilderName") %>' />
</td>
<td>
<asp:LinkButton ID="EditButton" runat="Server" Text="Edit" CommandName="Edit" />
<asp:LinkButton ID="DeleteButton" runat="Server" Text="Delete" CommandName="Delete" />
</td>
</tr>
</AlternatingItemTemplate>
<InsertItemTemplate>
<tr style="background-color:#D3D3D3;">
<td style="vertical-align:top;"> </td>
<td style="vertical-align:top;">
<asp:Label ID="lblBuilderName" runat="server" AssociatedControlID="txtBuilderName" Text="Builder Name"></asp:Label>
<asp:TextBox ID="txtBuilderName" runat="server" Text='<%#Bind("BuilderName") %>' />
</td>
<td>
<asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
</td>
</tr>
</InsertItemTemplate>
<EditItemTemplate>
<tr style="background-color: #ADDDAD">
<td>
<asp:HiddenField ID="hBuilderID_PK" runat="server" Value='<%#Eval("BuilderID_PK") %>' />
</td>
<td>
<asp:TextBox ID="txtBuilderName" runat="server" Text='<%# Bind("BuilderName") %>' MaxLength="50" /><br />
</td>
<td>
<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" />
<asp:LinkButton ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" />
</td>
</tr>
</EditItemTemplate>
</asp:ListView>
</asp:Content>
VB source:
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
Public Class BuilderMaintenance
Inherits System.Web.UI.Page
Dim da As OracleDataAdapter
Dim dtBuilder As DataTable
Dim cn As OracleConnection
Dim cmd As OracleCommand
Dim sSQL As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
cn = New OracleConnection("Data Source=" & HttpContext.Current.Application("sDataBase") & "; User Id=" & HttpContext.Current.Session("UserID") & "; Password=" & HttpContext.Current.Session("Password") & "; Pooling=True;")
If Not IsPostBack Then
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End If
End Sub
Public Function GetBuilder() As DataTable
sSQL = "Select BuilderID_PK, BuilderName from App_TBIN.Builder Order By BuilderName"
da = New OracleDataAdapter(sSQL, cn)
dtBuilder = New DataTable
da.Fill(dtBuilder)
Return dtBuilder
End Function
Protected Sub lvBuilder_ItemEditing(sender As Object, e As ListViewEditEventArgs)
lvBuilder.EditIndex = e.NewEditIndex
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemUpdating(sender As Object, e As ListViewUpdateEventArgs)
Dim BuilderID_PK As Integer = 0
Dim BuilderName As String = ""
Dim hBuilderPK As HiddenField = TryCast(lvBuilder.Items(e.ItemIndex).FindControl("hBuilderID_PK"), HiddenField)
If hBuilderPK IsNot Nothing Then
BuilderID_PK = hBuilderPK.Value
End If
Dim txtBuilderName As TextBox = TryCast(lvBuilder.Items(e.ItemIndex).FindControl("txtBuilderName"), TextBox)
If txtBuilderName IsNot Nothing Then
BuilderName = txtBuilderName.Text
End If
sSQL = "UPDATE App_TBIN.Builder SET BuilderName = '" & BuilderName & "' WHERE BuilderID_PK = '" & BuilderID_PK & "'"
cn.Open()
cmd = New OracleCommand(sSQL, cn)
cmd.ExecuteNonQuery()
cn.Close()
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemCanceling(sender As Object, e As ListViewCancelEventArgs)
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemDeleting(sender As Object, e As ListViewDeleteEventArgs)
Dim BuilderID_PK As Integer = 0
Dim hBuilderPK As HiddenField = TryCast(lvBuilder.Items(e.ItemIndex).FindControl("hBuilderID_PK"), HiddenField)
If hBuilderPK IsNot Nothing Then
BuilderID_PK = hBuilderPK.Value
End If
sSQL = "Delete from App_TBIN.Builder WHERE BuilderID_PK = '" & BuilderID_PK & "'"
cn.Open()
cmd = New OracleCommand(sSQL, cn)
cmd.ExecuteNonQuery()
cn.Close()
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Protected Sub lvBuilder_ItemInserting(sender As Object, e As ListViewInsertEventArgs)
Dim BuilderName As String = ""
Dim BuilderID_PK As Integer = 0
Dim txtBuilderName As TextBox = TryCast(e.Item.FindControl("txtBuilderName"), TextBox)
If txtBuilderName IsNot Nothing Then
BuilderName = txtBuilderName.Text
End If
sSQL = "INSERT INTO App_TBIN.Builder (BuilderName) VALUES ('" & BuilderName & "')"
cn.Open()
cmd = New OracleCommand(sSQL, cn)
cmd.ExecuteNonQuery()
cn.Close()
lvBuilder.EditIndex = -1
lvBuilder.DataSource = GetBuilder()
lvBuilder.DataBind()
End Sub
Private Sub lvBuilder_PagePropertiesChanging(sender As Object, e As PagePropertiesChangingEventArgs) Handles lvBuilder.PagePropertiesChanging
lvBuilder.SetPageProperties(e.StartRowIndex, e.MaximumRows, False) 'Line 87 throws the error!!!
lvBuilder.DataBind() 'rebind List View
End Sub
End Class
Silverlight....
Member
431 Points
369 Posts
Re: DataPager in listview not paging
Dec 06, 2012 05:15 AM|LINK
ok.. try to remove PagedControlID="lvBuilder" QueryStringField="page" from DataPager control.
I also expect that you have more than 20 records. Else set DataPager's PageSize property to 5 for testing purpose and then check.
kraznodar
Contributor
3332 Points
881 Posts
Re: DataPager in listview not paging
Dec 06, 2012 03:14 PM|LINK
I made the change you suggested and it killed the page. The error is below.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30456: 'lvBuilder_PagePropertiesChanging' is not a member of 'ASP.buildermaintenance_aspx'.
Source Error:
Line 3: </asp:Content> Line 4: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> Line 5: <asp:ListView ID="lvBuilder" DataKeyNames="BuilderID_PK" runat="server" onitemediting="lvBuilder_ItemEditing" onitemupdating="lvBuilder_ItemUpdating" OnPagePropertiesChanging="lvBuilder_PagePropertiesChanging" Line 6: onitemcanceling="lvBuilder_ItemCanceling" onitemdeleting="lvBuilder_ItemDeleting" InsertItemPosition="LastItem" oniteminserting="lvBuilder_ItemInserting"> Line 7: <LayoutTemplate>Source File: C:\Inetpub\wwwroot\TBIN2012\TBIN2012\BuilderMaintenance.aspx Line: 5
kraznodar
Contributor
3332 Points
881 Posts
Re: DataPager in listview not paging
Dec 06, 2012 03:25 PM|LINK
Ok this is just plain odd. I undid the change you suggested and it still gave the same error. I went to my code behind and changed the
lvBuilder_PagePropertiesChanging from protected to private and then back to protected. Now it works completely. So essentially the original code was good and the change didn't actually break anything. The compiler just had a bout of stupid but it is feeling much better now. Thanks for the help.
I need a way to mark this as completed but not answered. I don't need any more help but I have no idea what caused the issue in the first place.