javascript
  • c#
  • asp.net
  • 2016-08-24 91 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> 
    
    相關問題