Как добавить метки (не только одну) в ячейку DataGridView
Мне нужна сетка, которая имеет несколько разных цветовых меток в последнем столбце, как показано ниже. Я знаю, как сделать с одной меткой, но мне нужно 4, и мне нужно сделать их видимыми или невидимыми с помощью значения (değer) в сетке.
например
if value is below 20 the red label will appear,
if value is over 40 the yellow and orange will appear same time,
if value is between 20-40 green label will appear...
любая помощь будет оценена.
2 ответа
Решение
Вам нужна функция, которая выглядит следующим образом:
void UpdateGridColumnLabels(int index){
int width = column.Width;
int height = gridRow.Height;
Bitmap bmp = new Bitmap(width, height, g);
Graphics g = Graphics.FromImage(bmp);
if(value < 20)
g.FillRect(Brushes.Red, 0, 0, width / 3, height);
else if(value >= 20 && value < 40)
g.FillRect(Brushes.Orange, width/3, 0, width / 3, height);
else
g.FillRect(Brushes.Yellow, 2 * width/3, 0, width / 3, height);
gridViewImageColumn[index] = bmp;
}
Здесь вы создаете растровое изображение, которое вписывается в вашу ячейку. Затем вы используете класс Graphics для динамического добавления меток в зависимости от ваших условий. После этого это растровое изображение с метками становится содержимым ячейки.
Вы имеете в виду, как это?
<asp:TemplateField HeaderText="Select" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<asp:Label runat="server" ID="lblId" Text='<%# Bind("Id") %>'
Visible="false"></asp:Label>
<asp:Label runat="server" ID="lblId" Text='<%# Bind("Id") %>'
Visible="false"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Код позади:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
Label lbl1 = (e.Row.FindControl("lblFirstEntry") as Label);
//Play with your control
Label lbl2 = (e.Row.FindControl("lblSecondEntry") as Label);
//Play with your control
}
}