Сначала отобразите ссылки на категории на главной странице:
** Когда вы вызываете GetAllProductCategories, каждая строка результата будет содержать как минимум два столбца (cat_id и cat_name).
Когда вы получаете каждую строку по индексу (var r = listSubMenu.Rows [i]), возвращаемая строка будет иметь cat_id и cat_name для этой записи, я добавил (var name = r ["cat_name"]) для иллюстрации .
Если вы отлаживаете этот шаг и проходите через него, вы должны увидеть, что каждая итерация цикла for дает переменной id идентификатор следующей категории, который затем используется в строке (var count = __account.GetSpecificCategory (id);)
var listSubMenu = __account.GetAllProductCategories();
var sb = new StringBuilder();
for (int i = 0; i < listSubMenu.Rows.Count; i++)
{
var r = listSubMenu.Rows[i];
var id = Int32.Parse(r["cat_id"]);
var name = r["cat_name"];
var count = __account.GetSpecificCategory(id);
sb.AppendFormat(String.Format(@"<li{0}><a href='/account/products.aspx?categoryid={0}'>{1} ({2})</a></li>", r["cat_id"], r["cat_name"], count.Rows.Count));
}
active_sub_products.Text = sb.ToString();
Затем в другое текстовое поле или область реальной страницы "products.aspx"
var sbProducts = new StringBuilder();
var selectedCat = Request.QueryString["categoryid"];
if(!string.IsNullOrWhitespace(selectedCat))
{
var selectedCatId = Int32.Parse(selectedCat);
var products = __account.GetSpecificCategory(selectedCatId);
for(int j = 0; j < products.Rows.Count; j++)
{
// ... do product listing stuff here
// sbProducts.Append(...);
}
}
else
{
sbProducts.AppendLine("Invalid Category Id Selected!");
}
active_selected_products.Text = sbProducts.ToString();
** Примечание: когда вы вызываете Request.QueryString ["value"], оно будет либо:
Возвращает значение NULL, указывающее, что нет параметра строки запроса с совпадающим именем
или
- Возвращает строку, представляющую содержимое между значением = и концом URL или следующим & найдено.
** это не полностью производственный код качества, необходимо выполнить дополнительные проверки значения строки запроса, например, перейти к tryparse, проверить количество возвращаемых продуктов и показать «Продукты не найдены для этой категории». .. и т. д. **