我能够从another question获得部分答案,但无法找到我需要完成的更具体的信息。
我正在尝试将2个字段组合成1,就像上面的问题一样,但其中一个是GridHyperLinkColumn。我在后面的代码中使用GridItemDataBound事件将2个字段放在一起,如下所示:
protected void GridItemDataBound(object sender, GridItemEventArgs e) {
if (e.Item is GridDataItem) {
GridDataItem item = (GridDataItem)e.Item;
item["A"].Text = item["A"].Text + " /<br/>" + item["B"].Text;
item["C"].Text = item["C"].Text + " /<br/>" + item["D"].Text;
}
}
为简单起见,我的UI缩短了如下:
<Columns>
<telerik:GridBoundColumn UniqueName="A" DataField="A" />
<telerik:GridBoundColumn UniqueName="B" DataField="B" Visible="false" />
<telerik:GridHyperLinkColumn DataNavigateUrlFields="ID" DataNavigateUrlFormatString="~.aspx?ID={0}" DataTextField="C" Text="{0}" UniqueName="C" />
<telerik:GridBoundColumn UniqueName="D" DataField="D" Visible="false" />
</Columns>
这适用于我合并为1(A&amp; B)的前2列。
但是假设item [“C”]是GridHyperLinkColumn。当我尝试相同的代码时,它只显示/ <D value>
。没有任何东西出现在斜线前面,应该显示“C”。
是否有不同的属性(而不是.Text)我应该使用或者是否需要以不同的方式进行?
答案 0 :(得分:0)
有很多方法可以做到这一点。一种方法是使用模板列,如下所示:
<Columns>
<telerik:GridTemplateColumn HeaderText="A and B">
<ItemTemplate><%# Eval("A") %>/<br /><%# Eval("B") %></ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn HeaderText="B and C">
<ItemTemplate><a href="blah.aspx?ID=<%# Eval( "C" ) %>"><%# Eval( "C" ) %></a>/<br /><%# Eval("D") %></ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
如果您对使用模板列不感兴趣,可以按照您的方式使其工作。问题是GridHyperlinkColumn
将链接呈现为控件(例如item["C"].Controls[0]
),而不是直接在Text属性中。这是让它做你想做的一种方法:
if (e.Item is GridDataItem) {
GridDataItem item = (GridDataItem)e.Item;
item["A"].Text = item["A"].Text + " /<br/>" + item["B"].Text;
Literal lit = new Literal();
lit.Text = " /<br/>" + item["D"].Text;
item["C"].Controls.Add( lit );
}