javascript
  • c#
  • asp.net
  • 2016-08-24 72 views 1 likes 
    1

    我在OnClientClick中使用数据绑定评估时出现问题,我无法找到正确绑定的方法。这里是我的代码在OnClientClick中进行评估

    <asp:LinkButton runat="server" ID="ItemMenuBtn" CssClass="ui-button ui-widget ui-corner-all" OnClientClick='OpenItemMenu(<%# Eval("NotificationData") %>);return false;'> 
        <i class="fa fa-lg fa-bars" aria-hidden="true"></i> 
    </asp:LinkButton> 
    

    我希望输出是这样的:

    <a onclick="OpenItemMenu({JSON notification data here});return false;" id="some id" class="ui-button ui-widget ui-corner-all"> 
    

    但不是我越来越:

    <a onclick="OpenItemMenu(&lt;%# Eval(&quot;NotificationData&quot;) %>);return false;" id="ctl00_m_g_28e3d385_2509_4d3a_9c53_1d17b87a802b_gvNoteworthyItems_ctl02_ItemMenuBtn" class="ui-button ui-widget ui-corner-all" href="javascript:__doPostBack('ctl00$m$g_28e3d385_2509_4d3a_9c53_1d17b87a802b$gvNoteworthyItems$ctl02$ItemMenuBtn','')"> 
    

    所以我的问题是:

    1. 为什么eval似乎没有工作?
    2. 为什么客户点击的所有内容都是这样编码的?
    3. 为什么回传被放置在链接的href中?正如你在客户端看到的,点击我不想回发,因为这个按钮打开一个对话框并将数据传递给它。

    回答

    1

    对于OnClientClick,你可以尝试:

    OnClientClick='<%# string.Format("OpenItemMenu(\"{0}\"); return false", Eval("NotificationData")) %>' 
    

    如果LinkBut​​ton的是不是在数据绑定控件,你必须调用DataBind,以确保数据绑定表达式求值:

    protected void Page_Load(object sender, EventArgs e) 
    { 
        ItemMenuBtn.DataBind(); 
    } 
    

    默认情况下,点击LinkBut​​ton会在__doPostBack的帮助下触发回传。在OnClientClick事件处理程序中返回false将取消该回发。

    +1

    这曾与周围去除转义引号的微小变化{0},因为我想要物体,谢谢! –

    0

    如何使用纯锚<a>标签,而不是一个LinkButton的,HTML 5 data属性和位的jQuery:

    <head runat="server"> 
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
        <script type="text/javascript"> 
         $(function() { 
          $(".notificationLink").click(function() { 
           var notification = $(this).data('notification'); 
           alert(notification + ".Now you can call OpenItemMenu()"); 
          }); 
         }); 
        </script> 
    </head> 
    <body> 
        <form id="form1" runat="server"> 
         <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
          <Columns> 
           <asp:BoundField DataField="ID" /> 
           <asp:TemplateField> 
            <ItemTemplate> 
             <a href="#" class="notificationLink" data-notification='<%# Eval("NotificationData") %>'>Click me...</a> 
            </ItemTemplate> 
           </asp:TemplateField> 
          </Columns> 
         </asp:GridView> 
        </form> 
    </body> 
    
    相关问题