将数据分配给RadGrid

时间:2012-04-23 20:09:43

标签: asp.net telerik

我想要一个有两列的网格,一个有标题,第二个有两个超链接(如果更容易,你可以创建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,没有链接。

1 个答案:

答案 0 :(得分: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>