I am trying to create a usefulness indicator on a page in asp.net using vb code behind. I have my reviews displaying in repeater control which has paging enabled. I have included two buttons to the end of the repeater one for Yes and the other No. I want to keep a count of how many times yes was clicked for that review and how many times no was clicked. By adding the yes count and no count together I can get the total. I can access the buttons but when I click them nothing happens. Would anyone be able to help? I've been trying to do this for hours and I can't find a solution. Below is the code I have used for both the paging and the attempt for the indicator.
Dim total As IntegerProtected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load doPaging() End Sub Function getTheData() As DataTable Dim DS As New DataSet() Dim strConnect As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & _ Server.MapPath("/App_Data/MovieBoard.accdb")) Dim objOleDBAdapter As New OleDbDataAdapter("Select MovieTitle, MovieImageFileName, ReviewText, ValueForMoney, ActingAbility, SpecialEffects, Plot, Total, Username, ReviewDate, ReviewerType From Movies, MovieReviews, MReviewRatings, MReviewTexts, UserDetails, ReviewerType WHERE Movies.MovieID = MovieReviews.MovieID AND MovieReviews.MReviewID = MReviewRatings.MReviewID AND MovieReviews.MReviewID = MReviewTexts.MReviewID AND MovieReviews.UserID = UserDetails.UserID AND MovieReviews.ReviewerTypeID = ReviewerType.ReviewerTypeID AND ReviewerType.ReviewerTypeID = 1", strConnect) objOleDBAdapter.Fill(DS, "Movies") Return DS.Tables("Movies").Copy End FunctionSub doPaging() pagedData.DataSource = getTheData().DefaultView pagedData.AllowPaging = True pagedData.PageSize = 1 Try pagedData.CurrentPageIndex = Int32.Parse(Request.QueryString("Page")).ToString() Catch ex As Exception pagedData.CurrentPageIndex = 0 End Try btnPrev.Visible = False btnNext.Visible = False If Not pagedData.IsFirstPage Then btnPrev.PostBackUrl = Request.CurrentExecutionFilePath + _ "?Page=" + CStr(pagedData.CurrentPageIndex - 1) End If If Not pagedData.IsLastPage Then btnNext.PostBackUrl = Request.CurrentExecutionFilePath + _ "?Page=" + CStr(pagedData.CurrentPageIndex + 1) End If pageNumber.Text = (pagedData.CurrentPageIndex + 1) & " of " & pagedData.PageCount movies.DataSource = pagedData movies.DataBind() End SubProtected Sub movies_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles movies.ItemCommand Dim yCount As Integer yCount = 0 Dim nCount As Integer nCount = 0 If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then Dim btnYes As Button = CType(e.Item.FindControl("btnYes"), Button) Dim btnNo As Button = CType(e.Item.FindControl("btnNo"), Button) Dim lblResults As Label = CType(e.Item.FindControl("lblResults"), Label) Dim sArgument As String = CType(e.Item.DataItem, DataRowView).Row.Item("MovieTitle").ToString If btnYes.OnClientClick Then yCount = yCount + 1 MsgBox(yCount) lblResults.Text = yCount ElseIf btnNo.OnClientClick Then nCount = nCount + 1 End If total = yCount + nCount End If MsgBox(total) End Sub
Why don't you keep the Yes and No buttons out of the Repeater Control?
You can always have a button and handle the OnClick event of the button!
Hope it helps u...
memecece
ASKER
Hi roopesshreddy,
I had thought about that but then the button would only take a user click on one page. I need the buttons to be inside the repeater so that when the paging new yes/no buttons are available for a new review. Hope that makes sense
Thank you :) It helps a lot. Just one more question how do I go about clearing the previous reviews? Sorry I only started using asp.net about 5 weeks ago so I'm still learning
How you are storing the review?
Are you using Sessions? If yes, then make it to NULL and re assign new values!
If you are using the variables, then assign them to 0!
It totally depends on the way you are holding the data. In any case, make the values to 0 or NULL and you are done!
Hope it helps u...
memecece
ASKER
Thanks :) As I am using a repeater control I will need to find the equivalent to pageIndexChanging for that control - I'm pretty sure the repeater does not have this functionality. Thanks for help
Great thank you :) I got it working. You wouldn't by any chance know how I would be able to get the amount of data visible on each page to change depending on the number of reviews for a particular movie? For example for the Hobbit there might be 4 reviews but for Rise of the Guardians there is 3. This would mean that the page size would be 4 for the hobbit and change to 3 for the second movie. I have a function written that I call when determining my pagesize but it doesn't seem to change the size
Roopesh Reddy
Hi,
Good Stuff!
Is everything OK now?
memecece
ASKER
For that yes :) Would you be able to suggest a solution for my other problem? - The page size issue?
Why don't you keep the Yes and No buttons out of the Repeater Control?
You can always have a button and handle the OnClick event of the button!
Hope it helps u...