Hi,
This below code snippet working with SQL query i wrote in code behind.
<asp:HyperLink ID="HyperLink2" runat="server" ToolTip='<%#DataBinder.Eval(Container.DataItem,"Category")%>'
NavigateUrl='<%#DataBinder.Eval(Container,"DataItem.id" , "./Default.aspx?id={0}")%>'>
<%#DataBinder.Eval(Container,"DataItem.Category")%>
(<%#DataBinder.Eval(Container,"DataItem.cnt")%>)</asp:HyperLink>
But if i am using routing with the same SQL Query it is not working data is not showing.
<asp:HyperLink runat="server" ID="lnkProduct"
NavigateUrl='<%# Helpers.FormatProductUrl(Eval("Category").ToString()) %>' Text='<%# Eval("Category") %>'>
</asp:HyperLink>
code behind SQL Query:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT id, category, ( SELECT COUNT(id) FROM Entry_tbl WHERE category_tbl.id = Entry_tbl.cat_id) as cnt FROM category_tbl", con);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
RepDetails.DataSource = ds;
RepDetails.DataBind();
con.Close();
}
}
global.asax
void Session_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
string pathAndQuery = Request.Url.PathAndQuery.ToString().ToLower();
routes.Add(
"Blogcat",
new Route("{Category}", new PostRouteHandler())
);
helper.cs
public class Helpers
{
public static string FormatProductUrl(string Category)
{
return RouteTable.Routes.GetVirtualPath(null, "Blogcat", new RouteValueDictionary { { "Category", Category } }).VirtualPath;
}
public static IHttpHandler GetNotFoundHttpHandler()
{
return BuildManager.CreateInstanceFromVirtualPath("~/NotFound.aspx", typeof(Page)) as Page;
}
}
PostRouteHandler.cs
public class PostRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string Category = requestContext.RouteData.Values["Category"] as string;
if (string.IsNullOrEmpty(Category))
return Helpers.GetNotFoundHttpHandler();
else
{
if (Category == null)
return Helpers.GetNotFoundHttpHandler();
else
{
HttpContext.Current.Server.UrlEncode(Category);
return BuildManager.CreateInstanceFromVirtualPath("~/Default.aspx", typeof(Page)) as Page;
}
}
}
}