1

こんにちは、asp 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でこれを機能させる方法を教えてください

4

3 に答える 3

4

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
于 2012-05-22T12:31:37.387 に答える
1

DirectCast メソッドを使用する必要はありません。サブルーチンを次のように表示する方が理にかなっている場合があります。

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

コントロールの CommandName プロパティに 2 番目の値を格納して、同じ方法で使用することもできます。

編集: コントロールを少し変更して、OnClick の代わりに OnCommand を使用します。

<asp:LinkButton runat="server" ID="linkId" OnCommand="doSomething"
CommandArgument="10" Text="ID" />
于 2012-09-27T00:20:13.547 に答える
1

イベント ハンドラーに何かを直接渡すことはできません。LinkButtonただし、のCommandArgumentプロパティを使用できます。

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

コードビハインドで(このイベントの正しい署名を使用して):

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

MessageBox はブラウザではなくサーバーに表示されるため、ASP.NET 環境では使用しないでください。

于 2012-05-22T12:32:40.797 に答える