asp.net
  • vb.net
  • 2015-11-06 149 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也支持点符号。

    相关问题