This question is locked. New answers and comments are not allowed.
Hi
I have a question about a Grid Page URL construction. I'm using Ajax Binding for my grid and the grid actions(paging, sorting) URL's are derived from the current action and controller. Here is my Code snippets:
Index.aspx
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="inputDetails">
<%
using (Ajax.BeginForm("Lookup", "OrderStatus", new { }, new AjaxOptions { UpdateTargetId = "orderStatusDetails", LoadingElementId = "busy"}))
{%>
<table border="0">
<tr>
<td>DeliveryDate:</td>
<td><%=Html.Telerik().DatePicker().Name("DeliveryDate").MinDate(new DateTime(1900,1,1)).Value(Model.DeliveryDate).Format("MM/dd/yyyy")%></td>
<td><button class="t-button t-state-default" type="submit">Look Up</button></td>
</tr>
</table>
<%
}
%>
</div>
<div id="busy" style="color: green; display:none" align="center" >
<img src="<%= Url.Content("~/Content/Vista/ajax-loader.gif")%>" alt=""/>
</div>
<div id="orderStatusDetails">
<% Html.RenderPartial("Lookup",Model); %>
</div>
</asp:Content>
LookUp.ascx
<div id="orderStatus">
<div style="color: red;">
<%Html.RenderPartial("StatusMessage",Model); %>
</div>
<% if (Model.OrderStatusDetails != null && Model.OrderStatusDetails.Count > 0)
{%>
<h3>Order Status Details</h3>
<p>
<%Html.Telerik().Grid(Model.OrderStatusDetails)
.Name("OrderStatusDetails")
.DataBinding(dataBinding => dataBinding.Ajax().Select("AJaxOrderStatus", "OrderStatus"))
.Columns(columns =>
{
columns.Bound(os => os.Alert).Width(40);
columns.Bound(os => os.DispenseDt).Width(70).Title("Dispensed").Format("{0:MM/dd/yyyy}");
columns.Bound(os => os.PatLName).Width(80).Title("Last Name");
columns.Bound(os => os.PatFName).Width(80).Title("First Name");
columns.Bound(os => os.NsId).Width(40).Title("Station");
columns.Bound(os => os.Room).Width(40);
columns.Bound(os => os.Bed).Width(40);
columns.Bound(os => os.DrugLabelName).Width(180).Title("Drug");
columns.Bound(os => os.RxNo).Width(50);
columns.Bound(os => os.Qty).Width(40);
columns.Bound(os => os.DaysSupply).Width(40).Title("Days");
columns.Bound(os => os.RxStatDescr).Width(60).Title("Status");
columns.Bound(os => os.RxStatMsg).Width(60).Title("Message");
columns.Bound(os => os.LastStepComplete).Width(100).Title("Last Step");
columns.Bound(os => os.LastStepCompleted).Width(70).Title("Completed").Format("{0:MM/dd/yyyy}");;
columns.Bound(os => os.DelivID).Width(50).Title("Delivery");
})
.CellAction(cell =>
{
if (cell.Column.Title == "Alert" && !string.IsNullOrEmpty(cell.DataItem.Alert))
{
//Set the background of this cell only
cell.HtmlAttributes["style"] = "font-weight: bold; color: red";
}
})
.Scrollable()
.Pageable(p => p.PageSize(15))
.Sortable(s=> s.SortMode(GridSortMode.MultipleColumn))
.Render();
%>
</p>
<%
}%>
</div>
When i click the paging and sorting in the grid it's taking me to the Lookup action instead of the the Ajax binding Action AJaxOrderStatus.
Controller Actions
[Authorize]
public ActionResult Index()
{
var orderStatus = SessionOrderStatusData;
return View(orderStatus);
}
[Authorize]
[GridAction]
public ActionResult AJaxOrderStatus()
{
var orderModel = SessionOrderStatusData;
return View(new GridModel { Data = orderModel.OrderStatusDetails });
}
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Lookup(FormCollection collection)
{
//Some implementation to retrieve data
}
I have a question about a Grid Page URL construction. I'm using Ajax Binding for my grid and the grid actions(paging, sorting) URL's are derived from the current action and controller. Here is my Code snippets:
Index.aspx
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="inputDetails">
<%
using (Ajax.BeginForm("Lookup", "OrderStatus", new { }, new AjaxOptions { UpdateTargetId = "orderStatusDetails", LoadingElementId = "busy"}))
{%>
<table border="0">
<tr>
<td>DeliveryDate:</td>
<td><%=Html.Telerik().DatePicker().Name("DeliveryDate").MinDate(new DateTime(1900,1,1)).Value(Model.DeliveryDate).Format("MM/dd/yyyy")%></td>
<td><button class="t-button t-state-default" type="submit">Look Up</button></td>
</tr>
</table>
<%
}
%>
</div>
<div id="busy" style="color: green; display:none" align="center" >
<img src="<%= Url.Content("~/Content/Vista/ajax-loader.gif")%>" alt=""/>
</div>
<div id="orderStatusDetails">
<% Html.RenderPartial("Lookup",Model); %>
</div>
</asp:Content>
LookUp.ascx
<div id="orderStatus">
<div style="color: red;">
<%Html.RenderPartial("StatusMessage",Model); %>
</div>
<% if (Model.OrderStatusDetails != null && Model.OrderStatusDetails.Count > 0)
{%>
<h3>Order Status Details</h3>
<p>
<%Html.Telerik().Grid(Model.OrderStatusDetails)
.Name("OrderStatusDetails")
.DataBinding(dataBinding => dataBinding.Ajax().Select("AJaxOrderStatus", "OrderStatus"))
.Columns(columns =>
{
columns.Bound(os => os.Alert).Width(40);
columns.Bound(os => os.DispenseDt).Width(70).Title("Dispensed").Format("{0:MM/dd/yyyy}");
columns.Bound(os => os.PatLName).Width(80).Title("Last Name");
columns.Bound(os => os.PatFName).Width(80).Title("First Name");
columns.Bound(os => os.NsId).Width(40).Title("Station");
columns.Bound(os => os.Room).Width(40);
columns.Bound(os => os.Bed).Width(40);
columns.Bound(os => os.DrugLabelName).Width(180).Title("Drug");
columns.Bound(os => os.RxNo).Width(50);
columns.Bound(os => os.Qty).Width(40);
columns.Bound(os => os.DaysSupply).Width(40).Title("Days");
columns.Bound(os => os.RxStatDescr).Width(60).Title("Status");
columns.Bound(os => os.RxStatMsg).Width(60).Title("Message");
columns.Bound(os => os.LastStepComplete).Width(100).Title("Last Step");
columns.Bound(os => os.LastStepCompleted).Width(70).Title("Completed").Format("{0:MM/dd/yyyy}");;
columns.Bound(os => os.DelivID).Width(50).Title("Delivery");
})
.CellAction(cell =>
{
if (cell.Column.Title == "Alert" && !string.IsNullOrEmpty(cell.DataItem.Alert))
{
//Set the background of this cell only
cell.HtmlAttributes["style"] = "font-weight: bold; color: red";
}
})
.Scrollable()
.Pageable(p => p.PageSize(15))
.Sortable(s=> s.SortMode(GridSortMode.MultipleColumn))
.Render();
%>
</p>
<%
}%>
</div>
When i click the paging and sorting in the grid it's taking me to the Lookup action instead of the the Ajax binding Action AJaxOrderStatus.
Controller Actions
[Authorize]
public ActionResult Index()
{
var orderStatus = SessionOrderStatusData;
return View(orderStatus);
}
[Authorize]
[GridAction]
public ActionResult AJaxOrderStatus()
{
var orderModel = SessionOrderStatusData;
return View(new GridModel { Data = orderModel.OrderStatusDetails });
}
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Lookup(FormCollection collection)
{
//Some implementation to retrieve data
}