I need to add a "Previous" and "Next" link to move through the orders easier
than having to click "Orders" each time to look at another order.
This is a good feature to have and I'm sure someone else has done it already.
I can't get mine to work. Here's the Previous link:
<div class="caption">
<h1><asp:Localize ID="Caption" runat="server" Text="Order #{0} - {1}" EnableViewState="false"></asp:Localize>
<asp:LinkButton runat="server" ID="lnkPrev"> Previous </asp:LinkButton>
protected void lnkPrev_Click(object sender, EventArgs e)
{
int orderId = (AlwaysConvert.ToInt(Request.QueryString["OrderId"]) - 1);
Response.Redirect(String.Format("ViewOrder.aspx?OrderNumber={0}&OrderId={1}", orderId, orderId));
This didn't work either:
Response.Redirect("ViewOrder.aspx?OrderNumber=" +orderId.ToString()+ "&OrderId="+orderId.ToString());
}
I'm guessing it's something with the postback.
Is there a difference between "OrderNumber" and "OrderId"? Should they be the same number?
Adding A Next and Previous link for Orders
Re: Adding A Next and Previous link for Orders
No. You're mixing the two and they are unfortunately not interchangable.Mike718NY wrote:Is there a difference between "OrderNumber" and "OrderId"? Should they be the same number?
Only the OrderId is required - try this:
Code: Select all
Response.Redirect(String.Format("ViewOrder.aspx?OrderId={0}", orderId));
Joe Payne
AbleCommerce Custom Programming and Modules http://www.AbleMods.com/
AbleCommerce Hosting http://www.AbleModsHosting.com/
Precise Fishing and Hunting Time Tables http://www.Solunar.com
AbleCommerce Custom Programming and Modules http://www.AbleMods.com/
AbleCommerce Hosting http://www.AbleModsHosting.com/
Precise Fishing and Hunting Time Tables http://www.Solunar.com
Re: Adding A Next and Previous link for Orders
The problem was really that the "protected void lnkPrev_Click" event wasn't being fired.
But, I found another way to implement this that works.
It appears in the breadcrumb too (see pic). Here it is if anyone is interested:
File: Admin\UserControls\AdminBreadCrumbs.ascx
In code behind:
I don't have error checking for "out of range" but I really don't care about that right now.
If you go to page "0" by hitting "Previous" on Order "1", you will get an error.
But, I found another way to implement this that works.
It appears in the breadcrumb too (see pic). Here it is if anyone is interested:
File: Admin\UserControls\AdminBreadCrumbs.ascx
Code: Select all
<div class="breadCrumbsPanel">
<asp:SiteMapPath ID="BreadCrumbs" runat="server" OnItemDataBound="BreadCrumbs_ItemDataBound">
<CurrentNodeStyle Font-Underline="false" Font-Bold="true" /><PathSeparatorTemplate> > </PathSeparatorTemplate>
</asp:SiteMapPath>
ADD THIS:
<asp:HyperLink runat="server" Visible="false" ID="hypPrev">
<font class="gold13"><< PREVIOUS ORDER</font></asp:HyperLink>
<asp:HyperLink runat="server" Visible="false" ID="hypNext">
<font class="gold13">NEXT ORDER >></font></asp:HyperLink>
TO HERE
</div>
Code: Select all
case "ViewOrder.aspx":
case "EditOrderItems.aspx":
case "ViewDigitalGoods.aspx":
Order order = GetOrder();
if (order != null)
{
ADD THIS:
hypPrev.Visible = true;
hypNext.Visible = true;
hypPrev.NavigateUrl = Request.Url.AbsolutePath + "?OrderNumber=" + Convert.ToString(order.OrderNumber - 1) + "&OrderId=" + Convert.ToString(order.OrderId - 1);
hypNext.NavigateUrl = Request.Url.AbsolutePath + "?OrderNumber=" + Convert.ToString(order.OrderNumber + 1) + "&OrderId=" + Convert.ToString(order.OrderId + 1);
TO HERE
// ORDER FOUND, VERIFY CONTROLS IN SITEMAPNODE
if (e.Item.Controls.Count > 0)
{
If you go to page "0" by hitting "Previous" on Order "1", you will get an error.
Re: Adding A Next and Previous link for Orders
Also you can use this mod as well for quick direct jumps via order numbers
viewtopic.php?f=45&t=9233
viewtopic.php?f=45&t=9233
Re: Adding A Next and Previous link for Orders
I updated this and it works better (but still doesn't check for "out of range"):
Code: Select all
........................
case "Default.aspx":
if (!(e.Item.SiteMapNode.Url.EndsWith("Shipments/Default.aspx")
|| e.Item.SiteMapNode.Url.EndsWith("Payments/Default.aspx")))
{
// BREAK AND DONT FALL IN NEXT CASE
break;
}
else goto case "ViewOrder.aspx"; // GO TO NEXT SAME CASE
// ************ [color=#4040FF]Here is where you start the changes:[/color]
// It was this, so you need to delete these 3 cases and add the ones below:
case "ViewOrder.aspx":
case "EditOrderItems.aspx":
case "ViewDigitalGoods.aspx":
// I just made them all individual cases, replace above with these:
case "ViewOrder.aspx":
Order order2 = GetOrder();
if (order2 != null)
{
hypPrev.Visible = true;
hypNext.Visible = true;
hypPrev.NavigateUrl = ResolveUrl("~") + "Admin/Orders/ViewOrder.aspx?OrderNumber=" + Convert.ToString(order2.OrderNumber - 1) + "&OrderId=" + Convert.ToString(order2.OrderId - 1);
hypNext.NavigateUrl = ResolveUrl("~") + "Admin/Orders/ViewOrder.aspx?OrderNumber=" + Convert.ToString(order2.OrderNumber + 1) + "&OrderId=" + Convert.ToString(order2.OrderId + 1);
// keep works hypNext.NavigateUrl = Request.Url.AbsolutePath + "?OrderNumber=" + Convert.ToString(order2.OrderNumber + 1) + "&OrderId=" + Convert.ToString(order2.OrderId + 1);
// ORDER FOUND, VERIFY CONTROLS IN SITEMAPNODE
if (e.Item.Controls.Count > 0)
{
// DETERMINE IF WE HAVE A LINK OR A LITERAL
if (e.Item.Controls[0].GetType().Equals(typeof(HyperLink)))
{
HyperLink link = (HyperLink)e.Item.Controls[0];
link.NavigateUrl += "?OrderNumber=" + order2.OrderNumber.ToString() + "&OrderId=" + order2.OrderId.ToString();
link.Text = string.Format(link.Text, order2.OrderNumber);
}
else if (e.Item.Controls[0].GetType().Equals(typeof(Literal)))
{
Literal literal = (Literal)e.Item.Controls[0];
literal.Text = string.Format(literal.Text, order2.OrderNumber);
}
}
}
break;
case "EditOrderItems.aspx":
Order order3 = GetOrder();
if (order3 != null)
{
// ORDER FOUND, VERIFY CONTROLS IN SITEMAPNODE
if (e.Item.Controls.Count > 0)
{
// DETERMINE IF WE HAVE A LINK OR A LITERAL
if (e.Item.Controls[0].GetType().Equals(typeof(HyperLink)))
{
HyperLink link = (HyperLink)e.Item.Controls[0];
link.NavigateUrl += "?OrderNumber=" + order3.OrderNumber.ToString() + "&OrderId=" + order3.OrderId.ToString();
link.Text = string.Format(link.Text, order3.OrderNumber);
}
else if (e.Item.Controls[0].GetType().Equals(typeof(Literal)))
{
Literal literal = (Literal)e.Item.Controls[0];
literal.Text = string.Format(literal.Text, order3.OrderNumber);
}
}
}
break;
// **** This case didn't change but check anyway:
case "ViewDigitalGoods.aspx":
Order order = GetOrder();
if (order != null)
{
// ORDER FOUND, VERIFY CONTROLS IN SITEMAPNODE
if (e.Item.Controls.Count > 0)
{
// DETERMINE IF WE HAVE A LINK OR A LITERAL
if (e.Item.Controls[0].GetType().Equals(typeof(HyperLink)))
{
HyperLink link = (HyperLink)e.Item.Controls[0];
link.NavigateUrl += "?OrderNumber=" + order.OrderNumber.ToString() + "&OrderId=" + order.OrderId.ToString();
link.Text = string.Format(link.Text, order.OrderNumber);
}
else if (e.Item.Controls[0].GetType().Equals(typeof(Literal)))
{
Literal literal = (Literal)e.Item.Controls[0];
literal.Text = string.Format(literal.Text, order.OrderNumber);
}
}
}
break;
// ************ stop changes.
case "ViewTracking.aspx":
...........................