RadGrid中第二列的扩展选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RadGrid中第二列的扩展选项相关的知识,希望对你有一定的参考价值。

我在我的项目中创建了一个RADGrid,我希望第二列上的Expanded选项而不是默认的1st。有可能吗?

答案

我发布了另一个答案,因为它与我之前的回复中的内容完全不同,将两者放在一个答案中对于读者来说会非常混乱。

此解决方案以100%的方式满足您的要求,如下面的屏幕截图所示。但是,这是一个高度定制的解决方案,如果您只想坚持RadGrid的开箱即用,我之前的回复非常合适。

EXpand Column shifted in Hierarchical grid

要记住的要点如下。

  • 你需要包含jquery才能工作。您可以使用Telerik控件库附带的嵌入式jquery轻松完成此操作。我已经提到过将在页面中自动包含嵌入式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>
另一答案

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();
 }

以上是关于RadGrid中第二列的扩展选项的主要内容,如果未能解决你的问题,请参考以下文章

DataGridViewComboBoxColumn选择一个项第二列自动填入数据库中信息

WPF:当第二列内容折叠时,DataGrid 不会扩展以占据 Grid 的两列

DT::DataTables 中第一列的黑色背景和白色字体

【小工具】python 携手R 计算两组数据相关性

pytoh 小程序

EXCEL如何把第二列的数据按照第一列数据排序,且第二列的数据少于第一列?