Ich muss mehrere Hyperlinks zu der Tabellenzelle in Radgrid hinzufügen, damit Benutzer auf den Link klicken können, um sie auf eine andere Seite umzuleiten. Die Datenquelle des Rasters ist eine Domäne, die eine Liste von Links für jeden Kunden enthält.Wie füge ich mehrere Hyperlinks zu einer Tabellenzelle aus einer Liste in der Datenquelle hinzu?
public class CustomerOverviewDomain
{
public CustomerEntity Entity { get; set; }
public IEnumerable<LeadDomain> Leads { get; set; }
public IEnumerable<QualifiedLeadsDomain> QualifiedLeads { get; set; }
public IEnumerable<ProspectDomain> Prospects { get; set; }
public List<string> Links
{
get
{
//NavigateUrl = '<%# "~/Reporting/SalesProposal/ProposalDownload.aspx?proposalId="+Eval("entity.ProposalId") %>' >
List<string> Links = new List<string>();
foreach (LeadDomain lead in Leads)
{
string link = "~/LeadsManagement/Leads/LeadsDetail.aspx?leadId=" + lead.entity.LeadId;
Links.Add(link);
}
foreach (QualifiedLeadsDomain qlead in QualifiedLeads)
{
string link = "!/LeadsManagement/QualifiedLeads/QualifiedLeadDetailPage.aspx?qualifiedLeadId=" + qlead.Entity.QualifiedLeadId;
}
foreach (ProspectDomain prospect in Prospects)
{
string link = "~/Prospects/ProspectDetailPage.aspx?prospectId=" + prospect.entity.ProspectMasterId;
Links.Add(link);
}
return Links;
}
}
}
Ich bin nicht sicher, was die Spalte in der RadGrid sein sollte und wie die Daten datengebundene werden.
<%--<telerik:GridBoundColumn HeaderText="Links"
DataField="Links" SortExpression="Links" UniqueName="Links"
ShowFilterIcon="false" CurrentFilterFunction="Contains" AutoPostBackOnFilter="false" FilterDelay="500">
<HeaderStyle Width="120px" />
</telerik:GridBoundColumn>--%>
<telerik:GridHyperLinkColumn DataTextField="Links" DataNavigateUrlFields="Links" UniqueName="Links">
</telerik:GridHyperLinkColumn>
<%-- <telerik:GridTemplateColumn
UniqueName="Links"
AllowFiltering="false"
HeaderText="URL">
<ItemTemplate>
<asp:HyperLink ID="Link" runat="server"></asp:HyperLink>
</ItemTemplate>
</telerik:GridTemplateColumn>--%>
Ich vermute, etwas muss in der datengebundenen Ereignis getan werden, aber nicht sicher, was genau. Ich stecke hier fest. Das meiste, was ich bekommen konnte, ist ein Hyperlink "System.Collections.Generic.List`1 [System.String]", der nirgends verlinkt. Könnte mir jemand in die richtige Richtung zeigen?
protected void rgCustomer_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
//Get the row from the grid.
GridDataItem item = e.Item as GridDataItem;
if (item != null)
{
List<string> links = item["Links"].;
//GridTableCell linkCell = (GridTableCell)item["Links"];
//var Link = item["Links"];
//if (Link != null)
//{
// TableCell cell = item["Links"];
// if (cell != null)
// {
// }
//}
}
}
//// GridTableCell linkCell = (GridTableCell)item["TemplateLinkColumn"];
// HyperLink reportLink = (HyperLink)reportLinkCell.FindControl("Link");
// // Set the text to the quote number
// reportLink.Text = "Google";
// //Set the URL
// reportLink.NavigateUrl = "http://www.google.com";
// //Tell it to open in a new window
// reportLink.Target = "_new";
}