我有以下问题。我有一个ListView从SQL表中返回数据。其中的一列看起来像“Ambient/Trance/Goa Trance/House”。在ListView中动态创建按钮
所有我想要做的就是分析此列,并为每个值创建按钮,例如一个按钮,“环境”,为“恍惚”按钮等
我试图创建在ItemDataBound事件按钮通过以下方式:
Dim ListView_Albums_PlaceHolder_Artists As PlaceHolder = e.Item.FindControl("ListView_Albums_PlaceHolder_Artists")
Dim Artists As String() = e.Item.DataItem("album_artists").ToString.Split("/")
Dim ArtistsN As String() = e.Item.DataItem("album_artists_n").ToString.Split("/")
Dim ListView_Albums_Literal_Artists As New Literal
If Artists.Length = 1 Then
ListView_Albums_Literal_Artists.Text = "Artist: "
Else
ListView_Albums_Literal_Artists.Text = "Artists: "
End If
ListView_Albums_PlaceHolder_Artists.Controls.Add(ListView_Albums_Literal_Artists)
For Integer1 As Integer = 0 To Artists.Length - 1
Dim ListView_Albums_LinkButton_Artist As New LinkButton
ListView_Albums_LinkButton_Artist.Text = ArtistsN(Integer1)
ListView_Albums_LinkButton_Artist.CommandName = "Artist"
ListView_Albums_LinkButton_Artist.CommandArgument = Artists(Integer1)
ListView_Albums_LinkButton_Artist.CssClass = "a-03"
ListView_Albums_PlaceHolder_Artists.Controls.Add(ListView_Albums_LinkButton_Artist)
Dim ListView_Albums_Literal As New Literal
ListView_Albums_Literal.Text = ", "
If Not Integer1 = Artists.Length - 1 Then
ListView_Albums_PlaceHolder_Artists.Controls.Add(ListView_Albums_Literal)
End If
Next
他们创造的很好,但他们根本没有工作。我尝试为Click或Command事件添加处理程序,但它也没有帮助。
请帮我解决我的问题!
编辑:
由于VinayC建议我改的ItemDataBound到ItemCreated。这有帮助,但我面临另一个问题:据我了解e.Item.DataItem或者,也许,e.Item在PostBacks上成为Nothing,所以按钮不起作用。
如何解决这个问题?再次感谢!
谢谢!这帮助了我!但我还有一个问题。我在页面上有多个ListView,我将它们动态绑定到SQLDataSources。当我做ListView.DataSource = Nothing ListView.DataBind()时,ItemCreated事件会引发错误。我怎样才能避免它。顺便说一下,当我按动态生成的按钮时,它们会触发但消失。我能用它做什么? –
对不起,我错了。它没有帮助。这些按钮不会发送CommandName和CommandArguments。 –