如何返回asp:转发器计数

时间:2017-03-23 17:45:22

标签: c# asp.net repeater

我在我的应用程序中实现了搜索,并进入结果页面,其中结果通过asp:repeater填充表格。我将在下面提供代码。

C#

namespace WebApplication {
    public partial class SearchResults : System.Web.UI.Page {
        protected void Page_Load(object sender, EventArgs e) {
            if (Request.Params["searchterm"] != null) {
                ResultLabel.Text = "Search results for: " + Request.Params["searchterm"];
                string searchTerm = Request.Params["searchterm"];
                int results = 0; //If I were to set it on back end
                string constr = ConfigurationManager.ConnectionStrings["CurrencyDb"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constr)) {
                    using (SqlCommand cmd = new SqlCommand("dbo.SearchProc", con)) {
                        try {
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@SearchTerm", searchTerm);
                            con.Open();
                            SqlDataAdapter sda = new SqlDataAdapter(cmd);
                            DataSet ds = new DataSet();
                            sda.Fill(ds);
                            ResultsTableRepeater.DataSource = ds;
                            ResultsTableRepeater.DataBind();
                        }
                        catch (SqlException sqlex) {
                            throw new Exception("SQL Exception loading data from database. " + sqlex.Message);
                        }

                        catch (Exception ex) {
                            throw new Exception("Error loading results data from database. " + ex.Message);
                        }
                    }
                }
            }
        }
    }
}

asp.net

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <br />
<br />
<br />
<br />
    <asp:Label ID="ResultLabel" runat="server"></asp:Label>
    <br />
    <br />
    <br />
    <br />
    <asp:Repeater ID="ResultsTableRepeater" runat="server">
        <HeaderTemplate>
            <table class="td-table-bordered">
                <th>Currency Id</th>
                <th>Component</th>
                <th>Version</th>
                <th>Vendor</th>
                <th>Tech Owner</th>
                <th>Tech Contact</th>
                <th>Fiscal Consideration</th>
                <th>Currency Status</th>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td><%# Eval("CurrencyId") %></td>
                <td><asp:HyperLink ID="UpdateLink" NavigateUrl='<%# Eval("CurrencyId", "http://10.155.54.101/Update?CurrencyId={0}") %>' runat="server" Target="_blank"><%# Eval("Model") %></asp:HyperLink></td>
                <td><%# Eval("Version") %></td>
                <td><%# Eval("Vendor") %></td>
                <td><%# Eval("Tech Owner") %></td>
                <td><%# Eval("Tech Contact") %></td>
                <td><%# Eval("FiscalConsideration") %></td>
                <td><%# Eval("Status") %></td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>

            <asp:Label ID="StatusLabel" runat="server" Text="Label"></asp:Label>
        </FooterTemplate>
    </asp:Repeater>
    <br />
</asp:Content>

我想要做的是打印一个数字,在页脚中返回了多少结果。但是,在我的所有搜索中,我似乎无法找到一种方法,尽管看起来它应该是一项简单的任务。

有没有办法,无论是在C#代码后面还是在aspx中直接打印结果量到底如何?如果有一个while(reader.read)循环来增加一个计数器会很容易,但事实并非如此。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用sda.Fill(ds);的返回值:

作为documentation for Fill says

  

返回值:在DataSet中成功添加或刷新的行数。

因此:

int rowsReturned = sda.Fill(ds);

然后您可以在页脚中指定值。

答案 1 :(得分:0)

这是一个类似的问题: Determine the repeater row count in asp.net

希望这会帮助你!应该能够在代码隐藏中的任何地方使用他们的解决方案来获取Count,然后在页脚中的任何位置显示它(假设在您尝试获取计数时已经填充了转发器)。