0

ページにいくつかの結果を表示するために更新パネルを使用していますが、問題なく正常に動作しています。

結果が返されなかった場合でも、レコードが見つからないというメッセージを表示したいと思います。

問題は、asp:panel(pnlNoUsers) の表示オプションを true または false にすることです (これには、レコードが見つからないというメッセージが含まれています。

更新パネルの私のコードは次のとおりです。

                <asp:UpdatePanel ID="pnlCust" runat="server">
                    <ContentTemplate>
                        <asp:Panel ID="pnlNoUsers" runat="server" visible="false">
                            <div class="inner-page-title">
                                <h2>
                                    No records found.</h2>
                            </div>
                        </asp:Panel>
                        <%=show_cust()%>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="btnRefresh" />
                    </Triggers>
                </asp:UpdatePanel>

show_cust() 関数は、ページに表示される文字列を返すだけです。

    If bHasUsers = False Then
        pnlNoUsers.Visible = True
        Return ""
    End If
    pnlNoUsers.Visible = False
    Return strUsers & "</ul>"

パネルの「pnlNoUsers」可視性プロパティはまったく変化しませんか?

どうすればこれができるか知っている人はいますか?

ありがとう、

4

3 に答える 3

1

要件の複雑さはわかりませんが、データ コントロールを使用して条件付きロジックを完全にスキップできます。を持つ gridview コントロールを使用できます。

使用できる EmptyDataText プロパティ。 MSDN: Gridview の EmptyDataText プロパティ

DataSource および dataBind プロパティを使用して、gridview コントロールをデータに手動でバインドできます。

于 2013-02-26T05:35:23.350 に答える
0

関数show_cust()を使用している理由。ボタンクリックアクションで機能を追加できます。最初はパネルが見えないからです。条件に応じてボタンクリック時に表示される必要があります。だから機能性を追加する`

If bHasUsers = False Then
        pnlNoUsers.Visible = True
        Return ""
    End If
    pnlNoUsers.Visible = False
    Return strUsers & "</ul>"

btnRefreshクリックイベント。それが動作します

于 2013-02-26T04:43:37.727 に答える
0

ボタン クリック イベントがないと、どこで問題が発生しているのかを判断するのが難しくなります。ただし、いくつかのアイデア: UpdateMode を条件付きに設定します。これは、更新パネルを使用する通常のモードであり、インライン応答書き込みを取り除きます。これは、ASP.NET データ表示を処理する良い方法ではありません。また、Literal タグを追加します。ユーザーのリストをレンダリングできます。Damien が述べたように、コードで順序付けられていないリストを生成してブラウザーに書き込むのではなく、ListView、Repeater、または GridView を (この順序で) 使用してユーザー リストをレンダリングします。

<asp:UpdatePanel ID="pnlCust" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Panel ID="pnlNoUsers" runat="server" Visible="false">
            <div class="inner-page-title">
                <h2>No records found.</h2>
            </div>
        </asp:Panel>
        <asp:Literal ID="CustomerListLiteral" runat="server" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnRefresh" />
    </Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnRefresh" runat="server" OnClick="btnRefresh_Click" />

ボタン クリック イベントで更新パネルの作業を処理します。私の賭けは、あなたがインラインで行った応答書き込みが、更新パネルの動作をトリガーしていなかったということです。これはあなたが望むことをするはずです。

Protected Sub btnRefresh_Click(sender As Object, e As EventArgs)
    Dim bHasUsers As Boolean = False
    Dim strUsers As String = String.Empty

    If bHasUsers = False Then
        pnlNoUsers.Visible = True
    Else
        pnlNoUsers.Visible = False
        CustomerListLiteral.Text = strUsers & "</ul>"
    End If

    ' Force an update refresh if necessary, but this shouldn't be needed
    pnlCust.Update()
End Sub
于 2013-02-26T08:47:27.773 に答える