Вопрос по asp.net – Как установить стиль ячейки в asp: DataGrid?

3

Как я могу установить (CSS) стиль ячейки вasp:DataGrid?

Чего я действительно пытаюсь достичь?html tableгде я контролирую содержимое html для каждой ячейки и стиль css для каждой строки и для каждой ячейки:

<TABLE>
   <TR class="odd available">
      <TD class="holiday available hassub firstColumn">
          <P ...>...
      <TD class="blackout">
          <A href="...">...</A>
      <TD style="available">
          <SPAN ...>...</SPAN>
      <TD class="booked">
          <DIV ...>...</DIV>
      <TD class="orphan available">
          <DIV ...>...</DIV>
      <TD style="orphan booked checked">
          <SPAN ...>...</SPAN>
          <A href="...">...</A>
          <DIV ...>...</DIV>
   </TR>
   <TR class="blackout">
      <TD>34 points
      <TD><%# GetHtmlForCell() %>
   </TR>
</TABLE>

И принято, чтоasp:Repeater cannot work в этом случае.

у меня есть HTML, который мне нужно сгенерировать; и я просто должен увидеть, если ASP.net может генерировать необходимый HTML. я не догадываюсь, так как "WebForms" означает, что вы не генерируете HTML.

Bonus Chatter

asp:DataGrid контроль в ASP.net визуализирует несколько ячеек. Форматирование каждого стиля можно настроить с помощьюустановка различных свойств форматирования, например:

BackColor ForeColor Font

Но нет способа отрегулироватьStyle клетки, например

style="holiday blackout hassub"
Bonus Reading

Некоторое несвязанное чтение бонусов:

Change the style of cell within datagrid MSDN: DataGridViewCellStyle Class How to set the style of a cell in an asp:ListView? Create a HTML table with an ASP repeater How to create a three column table in ASP.Net Repeater custom html code in a repeater MSDN: Cell Styles in the Windows Forms DataGridView Control
@ClaudioRedi Да, моя ошибка. Это 78 & # xB0; здесь; мой мозг жарен Ian Boyd
Вы на самом деле ссылаетесь на староеDataGrid контролировать вместоGridView? Rango
Я не понимаю, что вы пытаетесь сделать :( Вы устанавливаете классы CSS, используя атрибут style. Это опечатка? Claudio Redi

Ваш Ответ

2   ответа
2

GridView вместо старогоDataGrid, вы можете использоватьCssClass property дляGridViewRow а такжеTableCells.

Например вRowDataBound:

protected void Grid_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        if(e.Row.RowIndex == 0)
        {
            e.Row.CssClass = "odd available";
            e.Row.Cells[0].CssClass = "holiday available hassub firstColumn";
            // ....
            e.Row.Cells[4].CssClass = "orphan booked checked";
        }
        else if(e.Row.RowIndex == 1)
            e.Row.CssClass = "blackout";
    }
}
1

<style>
.class25
{
    background-color:Red;  
}
.class25a
{
    font-weight:bolder;
}
.class23
{
    background-color:Yellow;  
}
.class23a
{
    font-size:20px;
}
.class33
{
    background-color:Fuchsia;  
}
.class33a
{
    font-style:italic;
}
</style>
<asp:GridView ID="customGrid" runat="server" OnRowDataBound="customGrid_RowDataBound">

Теперь о коде позади:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindData();
    }
}

private void BindData()
{
    List<Employee> emp = new List<Employee>(){
        new Employee{Age=25,ID=1,First="John",Last="Smith"},
        new Employee{Age=23,ID=2,First="Juan",Last="Cabrera"},
        new Employee{Age=33,ID=3,First="Richard",Last="Mar"}
    };

    customGrid.DataSource = emp;
    customGrid.DataBind();

}

protected void customGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if ((e.Row.DataItem as Employee).Age == 25)
            e.Row.Cells[0].Attributes.Add("class", "class25 class25a");
        else if((e.Row.DataItem as Employee).Age == 23)
            e.Row.Cells[0].Attributes.Add("class", "class23 class23a");
        else
            e.Row.Cells[0].Attributes.Add("class", "class33 class33a");
    }
}

public class Employee
{
    public int ID { get; set; }
    public int Age { get; set; }
    public string First { get; set; }
    public string Last { get; set; }
}

Оказывает:

enter image description here

Похожие вопросы