2012-05-22 235 views
1

你好,我想從ASP LinkBut​​ton的參數傳遞給一個子程序和它不工作傳遞變量

這是LinkBut​​ton的

<asp:LinkButton runat="server" ID="linkId" OnClick="doSomething(10)">ID 
</asp:LinkButton> 

,這是我的子

Public Sub doSomething(ByVal mon As Integer) 
     MsgBox("this is the number : " & mon) 
    End Sub 

可有人告訴我怎樣才能使這項工作在VB.net

+0

你需要指定發件人和事件參數,去看看這個問題http://stackoverflow.com/questions/7247488/asplinkbutton-not-functional-in-production –

回答

3

CommandArgument財產嘗試

<asp:LinkButton runat="server" ID="linkId" OnClick="doSomething" 
    CommandArgument="10">ID</asp:LinkButton> 

Public Sub doSomething(sender As Object, e As EventArgs) 
     Dim btn As LinkButton = DirectCast(sender, LinkButton) 
     Dim msg As String = "this is the number : " & Int32.Parse(btn.CommandArgument) 
    End Sub 
+0

這工作正常,但是有什麼辦法更容易,因爲我真的不明白你剛剛做了什麼...一種方式稱之爲函數(par)如果如果我有多個參數你怎麼做這個 –

+1

@ user1410185:不幸的是你不能輕鬆做到。如果你有超過1個參數,你可以做一些難看的事情,比如讓逗號分隔的字符串包含不同的值'CommandArgument =「10,mysecondparameter」'。然後你必須拆分服務器上的字符串 –

+0

@ClaudioRedi:抱歉,最後一次回滾編輯,我認爲CommandArgument屬性返回的是對象而不是字符串(如[CommandEventArgs.CommandArgument](http://msdn.microsoft.com/)。 COM/EN-US /庫/ system.web.ui.webcontrols.commandeventargs.commandargument.aspx))。 –

1

你不能直接傳遞到任何一個事件處理程序。在您的代碼隱藏

<asp:LinkButton runat="server" 
     ID="linkId" 
     OnClick="LinkButton_Click" 
     CommandArgument="10">ID 
</asp:LinkButton> 

(與此事件的正確簽名):但是你可以使用LinkButtonCommandArgument財產

Protected Sub LinkButton_Click(sender As Object, e As EventArgs) 
    Dim lb = DirectCast(sender, LinkButton) 
    Dim ID As String = lb.CommandArgument; 
End Sub 

注意,你不應該在一個ASP.NET使用一個MessageBox環境,因爲它會顯示在服務器上而不是瀏覽器中。

+0

謝謝蒂姆,但如果我需要發送多個參數? –

+1

@ user1410185:那可能是什麼?客戶端上不在服務器上的內容是什麼?通常你只需要一個標識符,你可以通過每個ID。如果您通過javascript在客戶端執行了某些操作並希望保留它,請使用帶有runat = server的HiddenField,然後您也可以在服務器端訪問它。 –

+0

@downvoter:照顧評論?? –

1

您不必使用DirectCast方法。它可能會更有意義,你的子,看起來像這樣:

Public Sub doSomething(sender As Object, e As CommandEventArgs) 
    Dim msg As String = "this is the number : " & e.CommandArgument 
End Sub 

您還可以存儲在控件的CommandName屬性的第二值,並使用同樣的方式。

編輯:有輕微的改變你的控制,使用按需代替的OnClick:

<asp:LinkButton runat="server" ID="linkId" OnCommand="doSomething" 
CommandArgument="10" Text="ID" />