ASP Repeater不显示数据

时间:2016-07-07 16:08:41

标签: asp.net vb.net gridview pager asprepeater

我正在尝试使用GridView中的字母寻呼机工作。它确实有效,但在我用来显示字母的转发器中只显示一个字母。我已阅读其他帖子并查看了我的代码,它似乎应该正常工作,但事实并非如此。 任何帮助将不胜感激。

这是我的HTML

<asp:Repeater ID="rptAlphabets" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="lnkBtn1" runat="server" Text='<%#Eval("Value")%>' Visible='<%# Convert.ToBoolean(Eval("Selected"))%>' OnClick="Alphabet_Click"/>
        <asp:Label ID="lblAlpha" runat="server" Text='<%#Eval("Value")%>' Visible='<%# Convert.ToBoolean(Eval("Selected"))%>' />
    </ItemTemplate>
</asp:Repeater>

这是我背后的代码

Private Sub GenerateAlphabets()
    Dim alphabets As New List(Of ListItem)()
    Dim alphabet As New ListItem
    alphabet.Value = "ALL"
    alphabet.Selected = alphabet.Value.Equals(ViewState("CurrentAlphabet"))
    alphabets.Add(alphabet)
    For i As Integer = 65 To 90
        alphabet = New ListItem()
        alphabet.Value = [Char].ConvertFromUtf32(i)
        alphabet.Selected =   alphabet.Value.Equals(ViewState("CurrentAlphabet"))
        alphabets.Add(alphabet)
    Next

    rptAlphabets.DataSource = alphabets
    rptAlphabets.DataBind()
End Sub

我正在使用aspsnippets方法中的大部分代码。

编辑: 我从Page_Load

调用GenerateAlphabets
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Try

        ClearMessages()
        If Not IsPostBack Then
            ViewState("CurrentAlphabet") = "ALL"
            Me.GenerateAlphabets()
            BindGrids()
            BindDropDownListBoxes()

        End If
    Catch ex As Exception
        Me.HandleError(ex)
    End Try

End Sub

1 个答案:

答案 0 :(得分:0)

像这样更改你的LinkBut​​ton代码。

<asp:LinkButton ID="lnkBtn1" runat="server" 
        Text='<%#Eval("Value")%>' 
        Visible='<%# Convert.ToBoolean(Eval("Selected")) = False %>'
        OnClick="Alphabet_Click"/>

原因:您隐藏了当前未选中的所有LinkBut​​ton。你应该展示它们。