2012-05-22 35 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" />