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