2009-09-25 47 views
0

使用asp.net,C#3.5,VS 2008如何在onrowcommand上調用javascript函數?

我有一個名爲GV1與工作的C#代碼隱藏onrowcommand方法是點擊該行的按鈕時調用一個aspx的GridView。

在GridView中按鈕被動態生成的。

我想更換一個JavaScript函數,隱藏代碼調用,以避免往返到服務器。

我如何做到這一點?

到目前爲止,我已經嘗試

  1. 添加的代碼行屬性後面,當我在動態foreach循環,它沒有工作產生按鈕:

    r.Attributes.Add( 「OnRowCommand」,「javascript:gv1RowCommand(ID);」);

  2. 其運行前給出了一個錯誤如下:沒有重載的方法需要1 ARG

    <asp:GridView ID="gv1" runat="server" onrowcommand="gv1RowCommand(ID)" ... 
    
  3. 各種其他的東西,如事件onchange , onselected

我現在用的是遵循的JavaScript只是爲了看看我能不能叫它:

function gv1RowCommand(ID) { 
alert(
"row command"); 
} 
+0

我建議注入的JavaScript加載DOM後,這樣,如果腳本是禁用的,你仍然可以使用回發來處理,即使服務器端。 – 2009-09-25 16:15:45

+0

我可以處理已經使用 保護無效gv1_RowCommand(對象發件人,GridViewCommandEventArgs E)的情況下的服務器端 { GridViewRow行=(GridViewRow)(((按鈕)e.CommandSource)。NamingContainer); 等... 我試圖避免回發。 – 2009-09-25 16:20:33

+0

你不瞭解頁面生命週期。 RowCommand不是客戶端事件。 – 2009-09-25 16:36:22

回答

2

您需要首先創建按鈕的對象,然後爲其添加屬性。 檢查下面的代碼 -

foreach (GridViewRow row in gv1.Rows) 
{ 
    //Creates object of button inside your gridView Row 
    Button btnRowCommand = (Button)row.FindControl("YourButtonName"); 
    //Adds Attribute to button- in this case adds onclick attribute 
    //which will fire the 
    //gv1RowCommand(ID); javascript function 
    btnRowCommand.Attributes.Add("onclick", "gv1RowCommand('"+ ID +"');"); 
} 

而不是

// dont use this code 
r.Attributes.Add("OnRowCommand", "javascript:gv1RowCommand(ID);"); 
// dont use this code 

這將導致你的JavaScript功能gv1RowCommand(ID)當用戶點擊GridView控件內的按鈕發射。如果你需要在gridView中使用javascript的更多信息,你可以發郵件或回覆。如果上面的代碼片段對您不夠,您可以發佈更多的代碼列表,並相應地發佈適當的代碼。

+0

另外,您可以用同樣的方法將點擊事件添加到行本身。這樣用戶只需要點擊該行來觸發事件(如果這是所需的功能)。 – 2010-01-15 16:14:30

0

個你可以撥弄JavaScript事件:

Javascript Events

您沒有訪問任何的Javascript中你的頁面的方法或屬性。除非您使用Ajax,否則您無法訪問任何可持續的內容......因此,您可以在RowCommand中執行很多操作,以便可以有效地移植到客戶端JavaScript層。