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