2017-02-14 5 views
0

Я использую ASP.NET GridView.
Внутри него, у меня есть TemplateField следующим образом:Как добавить атрибут к рендерингу td в GridView?

<asp:TemplateField HeaderText="Nº Despesa" SortExpression="NumeroDespesa"> 
    <ItemTemplate> 
     <asp:Label ID='lblNumeroDespesa' runat="server" Text='<%#Bind("NumeroDespesa") %>' /> 
    </ItemTemplate> 
    <HeaderStyle CssClass="gv-col-numerodespesa" /> 
    <ItemStyle CssClass="gv-col-numerodespesa text-center" /> 
</asp:TemplateField> 

Этот код визуализируется в клиенте:

<td class="gv-col-numerodespesa text-center"> 
    <span id="ContentPlaceHolder_Site_gvDespesa_lblNumeroDespesa_0">00403-03-01</span> 
</td> 

Я хотел бы добавить данные титула на тд, как это:

<td class="gv-col-numerodespesa text-center" data-title="Nº Despesa"> 
    <span id="ContentPlaceHolder_Site_gvDespesa_lblNumeroDespesa_0">00403-03-01</span> 
</td> 

Как я могу это достичь?

Моя конечная цель - реализовать NoMoreTables.

ответ

1

Существует способ, но вам, вероятно, это не понравится. Во всяком случае, я этого не делаю.

Вы можете подписаться на событие RowDataBound и в атрибутах набора обработчиков ячейки. Однако вам нужно знать индекс столбца. Предполагая, что индекс 3:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     e.Row.Cells[3].Attributes.Add("data-title", "Nº Despesa"); 
    } 
} 
+0

Использование коллекции Cell является последним средством, я хочу избежать как можно большего. – Lucas

+1

@ Лукас, да, я согласен, поэтому замечание «не понравится». На самом деле нет другого способа на стороне сервера. Только js подходит, и я не уверен, что они лучше. – Andrei

+0

Даже не взломать PreRender? Как и тот, который использовался для того, чтобы GridView отображал thead и tfoot отдельно? – Lucas