2010-11-19 52 views
0

我有一個名爲btnShowTradeScreenshot的按鈕的GridView。 GridView創建了很多按鈕,我想將jQuery按鈕應用到它。這裏是我的相關的GridView代碼:如何將jQuery UI按鈕應用於ASP.NET中的html按鈕?

<asp:GridView 
    ID="grdTrades" 
    runat="server" 
    >    
    <Columns>    
     <asp:TemplateField HeaderText="Screenshot" > 
      <ItemTemplate> 
       <input name="btnShowTradeScreenshot" runat="server" visible='<%# Eval("screenshotId") != DBNull.Value %>' type="button" value='View...' onclick='<%# "ShowImageInNewPage(\"App_Handlers/ImageHandler.ashx?screenshotId=" + Eval("screenshotId") + "\")" %>' /> 
      </ItemTemplate> 
     </asp:TemplateField>    
    </Columns> 
</asp:GridView> 

我想使用此代碼申請了jQuery:

<script type="text/javascript"> 
    $(document).ready(function() { $("#<%= btnShowTradeScreenshot.ClientID %>").button(); }); 
</script> 

什麼也沒有發生,我得到的標準按鈕,而不是jQuery的按鈕。當我看着頁面的源代碼,我注意到按鈕具有錯位的名稱,如:

ctl00$contentMain$grdTrades$ctl05$ctl03

ctl00$contentMain$grdTrades$ctl10$ctl03

如何jQuery的適用於我的所有按鈕的任何想法?

謝謝。

回答

2

您可以在按鈕上使用類名而不是依賴於ClientID;這樣你節省了JavaScript的長度,並且不需要綁定到每個特定的控件。

在JS:

// equivalent to $(document).ready(function() { 
$(function() { 
    $('.customButton').button(); 
}); 

在ASP.NET:

<input type="button" runat="server" class="customButton" .../> 

另外,如果您的網格是一個Ajax綁定網格,<input/>元素將被重新創建你需要重新運行網格上的代碼以應用樣式:

$('#<%= grdTrades.ClientID %> .customButton').button(); 
+0

非常感謝。 – 2010-11-19 13:46:48

1

嘗試使用名稱選擇器代替:

$('input[name$=btnShowTradeScreenshot]').button(); 

甚至更​​好的應用CSS類的輸入,然後:

$('.button').button(); 
0

有許多按鈕創建和ASP會產生不同的ID爲他們,以確保每個人都有一個唯一的ID 。由於$('#...')旨在選擇一個唯一標識的元素,因此不能用它來選擇多個按鈕。

嘗試$(':button')來選擇所有按鈕對象。或者,您可以將每個按鈕的類設置爲ShowTradeScreenshot,然後使用$('.ShowTradeScreenshot')選擇它們。