2012-12-21 43 views
1

我想 - 很不成功 - 訪問中繼器控制中的按鈕。我有一個轉發器設置在顯示當前電影院中顯示的電影的頁面上。我創建了兩個按鈕並將它們添加到中繼器 - 一個用於預告片,另一個用於評論。爲了審查我想鏈接到另一個頁面,將有另一個轉發器啓用分頁。當用戶點擊評論按鈕時,他們應該被帶到僅顯示該特定電影評論的頁面。這是代碼,我有:中繼器控制中的訪問按鈕

MARKUP: 中繼器:

<asp:Repeater ID="movies" runat="server"> 
    <ItemTemplate> 
     <table width="641px"> 
      <tr> 
       <td> 
        <span style="font-weight:bold;font-size:16px;"> 
        <%# Container.DataItem("MovieTitle")%> 
         </span> 
       </td> 
       <td> 
        <span style="float:right;"> 
        <asp:Image ID="Image1" runat="server" ImageUrl = '<%# Eval("Total")%>' style="width:80px;height:14px;"/> 
        </span> 
       </td> 
      </tr> 
      <tr> 
       <td colspan="2"> 
        <hr style="height:1px;border-bottom:none;color:#e3e3e3;"/> 
       </td> 
      </tr> 
      </table> 
     <table width="641px"> 
      <tr> 
       <td> 
        <asp:Image ID="Image2" runat="server" ImageUrl = '<%# Eval("MovieImageFileName")%>' style="width:180px;height:108px;border:1px solid #e3e3e3;"/> 
       </td> 
       <td style="vertical-align:top;"> 
        <%# Container.DataItem("Synopsis")%> 
       </td> 
      </tr> 
      </table> 
     <table width="641px"> 

      <tr> 
       <td> 
        <span style="float:right"> 
        <asp:Button ID="btnTrailer" runat="server" Text="Trailer" BackColor="#FF9900" ForeColor="White" />&nbsp; 
        <asp:Button ID="btnReview" runat="server" Text="Review" BackColor="#FF9900" ForeColor="White" CommandName="Review" /> 
        </span> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <hr style="height:1px;border-bottom:none;color:#e3e3e3;"/> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 
</asp:Repeater> 

代碼隱藏:

Dim movie_title As String 
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    Dim myConn As New OleDbConnection 
    Dim cmd As New OleDbCommand 
    Dim dr, aDataReader As OleDbDataReader 
    Dim query, movieID As String 
    movie_title = Request.QueryString("id") 
    myConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & _ 
       Server.MapPath("/App_Data/MovieBoard.accdb")) 
    myConn.Open() 
    Dim sqlQuery = "Select movieID From Movies" 
    Dim aCmd = New OleDbCommand(sqlQuery, myConn) 
    aDataReader = aCmd.ExecuteReader() 

    If aDataReader.Read() = True Then 
     movieID = aDataReader(0) 
    Else 
     movieID = "0" 
    End If 

    query = ("Select MovieTitle, Genre, Synopsis, Starring, Total, Director, MovieImageFileName From Movies, MovieReviews, MReviewRatings WHERE Movies.MovieID = MovieReviews.MovieID AND MovieReviews.MReviewID = MReviewRatings.MReviewID AND ReviewerTypeID = 1") 
    cmd = New OleDbCommand(query, myConn) 
    dr = cmd.ExecuteReader() 
    movies.DataSource = dr 
    movies.DataBind() 
End Sub 

Protected Sub movies_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles movies.ItemCommand 
    If e.CommandName = "Review" Then 
     Response.Redirect("testingreviews.aspx?id = '" & movie_title) 
    End If 
End Sub 

當我運行頁面的頁面顯示,但是當我點擊回顧按鈕我收到以下錯誤:

Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> 
in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or 
callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager. 
RegisterForEventValidation method in order to register the postback or callback data for validation. 

任何關於我在做什麼的任何想法都是錯誤的?我對asp.net非常陌生。

+0

你是不是收到語法錯誤使用可變MOVIE_TITLE在movies_ItemCommand事件處理程序中? – Manish

+0

我做過Manish。我現在宣佈它不在page_load之內,但仍然出現上述錯誤。 – user1850189

+0

你可以請你的中繼器控制aspx部分和「//其他東西」的代碼? – Manish

回答

1

如果你想訪問一個按鈕使用事件ItemCreated或可能它的ItemDataBound。

把手movies.ItemCreated

在這種情況下,你可以再refeer使用的FindControl按鈕,

像這樣的事情

Sub Movies_ItemDataBound(Sender As Object, e As RepeaterItemEventArgs) Handles movies.ItemDataBound 
     Dim Btn As Button = CType(e.Item.FindControl("ButtonName"),Button) 
End Sub