Объединение столбца гиперссылки Telerik и столбца с привязкой к сетке в 1 поле - PullRequest
1 голос
/ 20 марта 2012

Мне удалось получить часть моего ответа от другого вопроса , но я не могу найти более конкретную информацию, которую мне нужно закончить.

Я пытаюсь объединить 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;
   }
}

Мой пользовательский интерфейс для простоты выглядит так:

 <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>

Это хорошо работает для первых 2 столбцов, которые я объединяю в 1 (A & B).

Однако предположим, что элемент ["C"] является GridHyperLinkColumn. Когда я пытаюсь использовать тот же код, он показывает только / <D value>. Ничего не видно перед косой чертой, где должна отображаться буква «С».

Есть ли другое свойство (вместо .Text), которое я должен использовать, или мне нужно сделать это по-другому?

1 Ответ

0 голосов
/ 20 марта 2012

Есть несколько способов сделать это.Один из подходов состоит в том, чтобы использовать столбец шаблона, как показано ниже:

<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 );
}
...