我在我的应用程序中实现了搜索,并进入结果页面,其中结果通过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)循环来增加一个计数器会很容易,但事实并非如此。
非常感谢您的帮助!
答案 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,然后在页脚中的任何位置显示它(假设在您尝试获取计数时已经填充了转发器)。