Расширенная опция на 2-й столбец в RadGrid - PullRequest
0 голосов
/ 14 сентября 2018

Я создал RADGrid в своем проекте, и я хочу, чтобы опция 2-го столбца была расширена вместо 1-го по умолчанию. Возможно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я отправляю другой ответ, потому что он сильно отличается от того, что был в моем предыдущем ответе, и объединение обоих в один ответ будет очень запутанным для читателя.

Это решение полностью соответствует вашим требованиям, как показано на следующем снимке экрана. Тем не менее, это очень индивидуальное решение, и мой предыдущий ответ подойдет, если вы хотите придерживаться только того, что доступно для RadGrid.

EXpand Column shifted in Hierarchical grid

Основные моменты, о которых следует помнить, приведены ниже.

  • Вам нужно включить jquery, чтобы это работало. Вы можете легко сделать это, используя встроенный jquery, который поставляется с библиотекой управления Telerik. Я упомянул разметку, которая автоматически включит встроенный jquery на вашу страницу.
  • Я предположил, что вы используете привязку на стороне сервера для иерархической RadGrid.
  • Вам нужно просто добавить блок JavaScript, показанный ниже, на страницу aspx, чтобы это работало.
  • Я перемещаю столбец раскрытия непосредственно перед 3-м столбцом, но вы можете переместить его в любую позицию, установив для переменной newPosition соответствующее значение.
  • В вашем сценарии вы должны установить newPosition в 1, поэтому столбец раскрытия появляется непосредственно перед вторым столбцом.
  • Обратите внимание, что при смещении столбца раскрытия также необходимо сместить заголовок столбца раскрытия, иначе заголовки столбцов не будут выровнены с их столбцами.

JavaScript для этого решения

<script type="text/javascript">

    Sys.Application.add_load(function () {
        $ = $telerik.$;//make sure you can use $ symbol for embedded jquery
        var newPosition = 2;//set this to 1 or 2 or 3 etc.(but never 0) 
                            //depending on your requirement

        //gridClientId is  the server-side RadGrid1.ClientID property i.e. id of radgrid div element in rendered page
        //var gridClientId = "<%=RadGrid1.ClientId%>";
        var grid = $find(gridClientId);

        var dataItems = grid.get_masterTableView().get_dataItems();

        for (var i = 0; i < dataItems.length; i++) {

           //get the expand column for the the row with index i
            var row = $(grid.get_masterTableView().get_dataItems()[i].get_element());
            var expandColumn = row.find("td.rgExpandCol");

            //move the data row expand column
            expandColumn.detach().insertBefore(row.find("td:eq(" + newPosition + ")"));
            expandColumn.width(50);
        }

        //move the column header for expand column
        var headerRow = $(grid.get_masterTableView().HeaderRow);
        var headerExpandColumn = headerRow.find(".rgExpandCol");
        headerExpandColumn.detach().insertBefore(headerRow.find("th:eq(" + newPosition+ ")"));
        headerExpandColumn.width(50);

    });

</script>

Разметка для включения встроенного jquery

<telerik:RadScriptManager runat="server" ID="RadScriptManager1">
  <Scripts>
    <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
    <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
    <%!-- othert scripts of your page will go here -->
</telerik:RadScriptManager>
0 голосов
/ 14 сентября 2018

Это невозможно с RadGrid.Кнопка расширения всегда будет размещена непосредственно перед первым столбцом в каждой строке.Однако с помощью некоторых шаблонов, как описано ниже, вы можете добиться этого.

  • Если вы хотите развернуть щелчок по второму столбцу, тогда сделайте второй столбец GridTemplateColumn.
  • Внешний RadGridдолжно иметь только 2 столбца, причем первые столбцы отображаются как обычный столбец, а второй столбец отображается как свернутая RadGrid.
  • В шаблоне для этого столбца place a RadGrid that has hierarchy enabled, который привязывается только к значениям строкипервого столбца.
  • Тогда вы в конечном итоге осуществите свое требование.

Обратите внимание, что вам следует привязать RadGrid в столбце шаблона к тому же источнику данных, что и внешний RadGrid в событии NeedDataSource RadGrid.,Единственным отличием будет то, что во внутренней RdGrid будет включена иерархия, и вам нужно будет использовать соответствующие события для реализации иерархии для внутренней RadGrid.

 protected void RadGrid2_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
 {
    (sender as RadGrid).DataSource = GetDataTable();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...