Как можно достичь следующего требования?Как я могу программно найти и развернуть конкретную строку в Telerik RadGrid?
Основываясь на значениях в queryString, запрошенная запись должна быть расширена в ее DetailView.
Как можно достичь следующего требования?Как я могу программно найти и развернуть конкретную строку в Telerik RadGrid?
Основываясь на значениях в queryString, запрошенная запись должна быть расширена в ее DetailView.
В этом примере используется Entity Framework 6 для доступа к данным. Это означает, что данные RadGrid pageSize, pageIndex и сортировки должны сохраняться в результате вызова, который EF делает в базу данных.
Допустим следующий URL-адрес, когда вы придете на страницу, содержащую RadGrid.
http://localhost:61878/search?pageindex=8&orderid=2871517&pagesize=50
декларативная разметка RadGrid будет выглядеть следующим образом.
<telerik:RadGrid ID="OrdersMasterGrid" runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False"
OnNeedDataSource="GridOnNeedDataSource"
OnPreRender="GridPreRender">
Тогда PageLoad
будет выглядеть следующим образом. Это срабатывает перед событием OnNeedDataSource
RadGrid, поэтому важно установить правильные идентификаторы страниц и страниц, поскольку эта информация будет полностью передаваться в базу данных.
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
OrderID_QueryString = Request.QueryString.GetValue<string>("orderid");
OrdersMasterGrid.MasterTableView.CurrentPageIndex = Request.QueryString.GetValue<int>("pageindex");
OrdersMasterGrid.MasterTableView.PageSize = Request.QueryString.GetValue<int>("pagesize");
}
Programatically расширяет правильную строку происходит во время OnPreRender
события. GridPreRender
EventHandler будет выглядеть так:
protected void GridPreRender(object sender, EventArgs e)
{
foreach (object gridDataItem in OrdersMasterGrid.MasterTableView.Items)
{
if (gridDataItem is GridDataItem)
{
GridDataItem gdi = gridDataItem as GridDataItem;
if (gdi["OrderID"].Text == OrderID_QueryString)
{
gdi.Expanded = true;
break;
}
}
}
}
Заключение: Хотя этот пример использует QueryString, это может быть лучше использовать ViewData, ViewBag или другие прозрачные механизмы. Ловушка такого подхода заключается в том, что если пользователь решит закладок на странице, он перестанет работать в конечном итоге, когда запрошенный заказ не существует в данных, возвращаемых EF6 для 8-й страницы, когда размер страницы равен 50.