0

我想要一个包含两列的网格,一列带有标题,第二列带有两个超链接(如果更简单,您可以创建 2 个不同的列,每个链接一个列)。

我有一个标题数组和一个 ID 数组。我希望链接类似于“edit.aspx?id=INSERT_ID_FROM_DATA_HERE”。

到目前为止我所拥有的:

<telerik:RadGrid ID="RadGrid1" runat="server" Skin="Telerik" AutoGenerateColumns="True">
                                            <MasterTableView>
                                                <Columns>
                                                    <telerik:GridBoundColumn HeaderText="Title" UniqueName="Title" DataFormatString="'{0}'">
                                                    </telerik:GridBoundColumn>
                                                    <telerik:GridHyperLinkColumn HeaderText="Actions" UniqueName="Actions" 
                                                        DataNavigateUrlFormatString="default.aspx?id='{0}" DataTextField="Edit">
                                                    </telerik:GridHyperLinkColumn>
                                                </Columns>
                                            </MasterTableView>
                                        </telerik:RadGrid>

和:

DataTable dt = new DataTable();
            DataColumn dcTitle = new DataColumn("Title");
            DataColumn dcId = new DataColumn("Actions");
            dt.Columns.Add(dcTitle);
            dt.Columns.Add(dcId);

            String[] widgetNames = new String[list.Count];
            String[] widgetIds = new String[list.Count];

            for (int i = 0; i < list.Count; i++)
            {
                widgetNames[i] = list[i].SelectSingleNode("title").InnerText;
                widgetIds[i] = list[i].SelectSingleNode("instanceid").InnerText;

                String[] row = new String[2];
                row[0] = widgetNames[i];
                row[1] = widgetIds[i];

                dt.LoadDataRow(row, true);
            }

            RadGrid1.DataSource = dt;

它创建了 2 个新列,并在那里打印标题和 ID,没有链接。

4

1 回答 1

1

由于您要指定列,因此请务必设置 AutoGenerateColumns="False"。将 DataField 和 DataNavigateUrlFields 属性设置为数据源的列名。

数据格式字符串中的占位符值引用网格列的指定数据字段。一个GridBoundColumn只能有一个DataField,而GridHyperLinkColumn可以有多个数据字段,用逗号分隔;{0} 指第一个字段,{1} 指第二个字段,依此类推...

要回答有关多个超链接的问题,为每个超链接使用单独的 GridHyperLinkColumn 会更容易。否则,您将不得不使用 TemplateColumn 来编写您自己的完全自定义渲染。

<telerik:RadGrid ID="RadGrid1" runat="server" Skin="Telerik" AutoGenerateColumns="False">
    <MasterTableView>
        <Columns>
            <telerik:GridBoundColumn HeaderText="Title" DataField="Title" DataFormatString="'{0}'" />
            <telerik:GridHyperLinkColumn HeaderText="Actions" UniqueName="Actions" DataNavigateUrlFields="Actions" DataNavigateUrlFormatString="default.aspx?id='{0}'" DataTextField="Edit" />
        </Columns>
    </MasterTableView>
</telerik:RadGrid>
于 2012-04-23T22:18:35.623 回答