0

システムのメイン ページ (Web フォーム) の 1 つに新しいセクションを追加して、ユーザーが作成したフォルダーにアップロードしたドキュメントを表示できるようにしようとしています。何個のフォルダーが設定されているか、またはフォルダーの名前が何であるかは事前にわかりません。私は、その上に一連の動的に生成された LinkBut​​tons を持つ GridView によってこれを達成しようとしています。各フォルダーには LinkBut​​ton があります。ユーザーが LinkBut​​ton をクリックすると、グリッドが再バインドされ、そのフォルダー内のドキュメントが表示されます。タブ コントロールを使用してフォルダーを表すことを望んでいましたが、.NET 3.5 では使用できないようです。私はVB.NETでコーディングしています。

私が直面している問題は、OnClick イベント ハンドラーを動的に追加することです。私が使用しているコードは、基本的に OnClientClick イベントを実装しています。lnkFolder_Click という Javascript 関数をアラートとともに追加すると、サーバー側関数をトリガーしてグリッドを再バインドする必要があるときに、その関数がトリガーされます。ページの PreInit イベントにコードを配置するなど、さまざまな提案とともにこの問題に関する多くのページを見てきました。これらの提案はどれもうまくいきませんでした。そのため、StackExchange コミュニティが、これまでのように私を正しい方向に導く手助けをしてくれることを願っています! 次のコードは私が試しているもので、ページ読み込みイベントにあります。

前もって感謝します!

        Dim dtFolders As DataTable
        Dim i As Integer

        dtFolders = DAL.GetClientFolders(Session("ClientKey"))
        If dtFolders.Rows.Count > 0 Then
            For i = 0 to dtFolders.Rows.Count - 1
                Dim lnkFolder As LinkButton = New LinkButton
                lnkFolder.ID = "lnkFolder" & i.ToString
                lnkFolder.Text = dtFolders.Rows(i)("FolderName")
                lnkFolder.CommandArgument = i
                lnkFolder.Attributes.Add("OnClick", "lnkFolder_Click()")
                'lnkFolder.OnClientClick += New EventHandler(lnkFolder_Click)
                phFolders.Controls.Add(lnkFolder)                  
            Next
        End If

lnkFolder_Click 関数は、次のように「スタブ化」されています。

Protected Sub lnkFolder_Click(sender As Object, e As EventArgs) Handles lnkFolder.Click

        Dim i As Integer

        i = 1

    End Sub
4

1 に答える 1

0

AddHandlerステートメントを使用してサーバー側のコールバックを追加できます

実行時にイベントをイベント ハンドラーに関連付けます。

AddHandler event, AddressOf eventhandler

AddHandler ステートメントは、実行時にプロシージャをイベントに接続します。

Dim dtFolders As DataTable
        Dim i As Integer

        dtFolders = DAL.GetClientFolders(Session("ClientKey"))
        If dtFolders.Rows.Count > 0 Then
            For i = 0 to dtFolders.Rows.Count - 1
                Dim lnkFolder As LinkButton = New LinkButton
                lnkFolder.ID = "lnkFolder" & i.ToString
                lnkFolder.Text = dtFolders.Rows(i)("FolderName")
                lnkFolder.CommandArgument = i

                AddHandler lnkFolder.Click, AddressOf Me.lnkFolder_Click 

                phFolders.Controls.Add(lnkFolder)                  
            Next
        End If

Protected Sub lnkFolder_Click(sender As Object, e As EventArgs) 

  Dim i As Integer

  i = 1

End Sub
于 2015-03-25T17:05:02.663 に答える