Вам необходимо добавить метку в ячейку в каждой строке GridView.Я бы предложил сохранить информацию для метки и всплывающей подсказки в коллекции ключей данных и добавить метку в событие OnRowDataBound.
Опция 1:
EDIT : добавлена разметка, показывающая, как добавить ключи данных
Определите ключи данных, как в примере ниже.Замените LabelTextColumn
и TooltipTextColumn
фактическим значением, которое вы хотите использовать для текста и всплывающей подсказки.Также обратите внимание, как здесь установлен обработчик события OnRowDataBound:
<asp:GridView ID="GridView1" runat="server" DataKeyNames="LabelTextColumn, TooltipTextColumn" OnRowDataBound="GridView1_RowDataBound" ...>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
</asp:GridView>
EDIT : исправлена ошибка с использованием RowIndex для получения ключей данных
, поскольку вы находитесь в RowDataBoundEventВам не нужно использовать цикл.Событие RowDataBound
вызывается из цикла, так как каждая строка привязана к базе данных, поэтому у вас есть доступ к текущей строке с помощью e.Row
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//we don't need this anymore, because the label is already in the row
//Label lbl = new Label();
//get the label from the row
Label lbl = (Label)e.Row.FindControl("Label1");
--set the text and tooltip text using the datakeys specified in the markup
lbl.Text = grd.DataKeys[e.Row.RowIndex]["LabelTextColumn"].ToString();
lbl.ToolTip = grd.DataKeys[e.Row.RowIndex]["TooltipTextColumn"].ToString();
//we don't need this anymore either, because the label is already added to the row
//e.Row.Cells[0].Controls.Add(lbl);
}
Опция 2: Использование inlineФункция Eval () для установки текста и текста всплывающей подсказки
<asp:GridView ID="GridView1" runat="server" ...>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("LabelTextColumn")' Tooltip='<%#Eval("TooltipTextColumn")%>' />
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
</asp:GridView>