asp.net
  • vb.net
  • 2015-11-06 71 views 0 likes 
    0

    我有以下的asp:直放站:設置的OnClick爲ASP:按鈕內ASP:直放站

    <asp:Repeater runat="server" ID="rptResults"> 
        <ItemTemplate> 
         <div class="FileFile Large pdf SearchResult"> 
          <a href='<%# DirectCast(Container.DataItem, FileFolder).Link %>' style="text-decoration:none"> 
           <%# DirectCast(Container.DataItem, FileFolder).BackgroundHTML%> 
           <p style="float:left;line-height:32px;margin:0px"><%# DirectCast(Container.DataItem, FileFolder).Filename%></p>            
          </a> 
          <p style="float:left;line-height:32px;margin:0px; margin-left:20px;">Path: <%# DirectCast(Container.DataItem, FileFolder).Link%></p> 
          <asp:Button runat="server" ID="btnDeleteFile" Name="<%# DirectCast(Container.DataItem, FileFolder).Link%>" Text="Delete" Style="float:right;margin-top:8px;cursor:pointer;"/> 
         </div> 
        </ItemTemplate> 
    </asp:Repeater> 
    

    我的問題是試圖建立一個onclick聽衆。

    首先我想:

    <asp:Button runat="server" OnClick="btnDeleteFile_Click" ID="btnDeleteFile" Name="<%# DirectCast(Container.DataItem, FileFolder).Link%>" Text="Delete" Style="float:right;margin-top:8px;cursor:pointer;"/> 
    

    和:

    Protected Sub btnDeleteFile_Click(sender As Object, e As System.EventArgs) 
        Response.Write("KDKDK") 
        Response.End() 
    End Sub 
    

    但造成Invalid postback or callback argument.

    我懷疑是因爲我不能設置一箇中繼器內的OnCLick監聽器?

    我然後設法:

    <asp:Button runat="server" ID="btnDeleteFile" Name="<%# DirectCast(Container.DataItem, FileFolder).Link%>" UseSubmitBehavior="false" Text="Delete" Style="float:right;margin-top:8px;cursor:pointer;"/> 
    

    Protected Sub rpt_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) 
        If e.CommandName = "Save" Then 
         'Save 
        End If 
    End Sub 
    

    中未引起回發錯誤,但並未觸發事件。我懷疑這是因爲聽衆沒有被分配到按鈕?

    如果我加一個手柄,例如:

    Protected Sub rpt_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rpt.ItemCommand 
    

    這給了錯誤:

    Handles clause requires a WithEvents variable defined in the containing type or one of its base types. 
    

    ,但我看不出如何分配WithEvents變量,我不知道這會在裏面工作一箇中繼器。

    我不會讓你無聊,我已經嘗試過,但我已經搜索了所有可以找到的東西,但是找不到任何能告訴我如何設置這個OnCLick事件的東西?

    +0

    嘗試添加一個OnItemCommand到你的中繼器並讓你的按鈕成爲CommandButton。 https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.command%28v=vs.110%29.aspx – Tim

    回答

    0

    簡單的錯誤:

    Protected Sub rpt_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rptResults.ItemCommand 
    

    和:

    <asp:Button runat="server" ID="btnDeleteFile" commandname="<%# DirectCast(Container.DataItem, FileFolder).Link%>" UseSubmitBehavior="false" Text="Delete" Style="float:right;margin-top:8px;cursor:pointer;"/> 
    
    3

    有幾件事情;沒有按鈕名稱屬性,如果它直接發送文本到客戶端,這可能會導致問題。對於ItemCommand工作,給該按鈕的命令的名稱,和(任選地)一個ARG如果存在:

    <asp:Button .. CommandName="Delete" CommandArgument="OPTIONAL" /> 
    

    然後應該觸發ItemCommand事件。對於name參數,您可以通過CommandArgument傳遞<%# DirectCast(Container.DataItem, FileFolder).Link%>。您也可以使用Eval as in this example。我相信Eval也支持點符號。

    相關問題