gpt4 book ai didi

c# - 自动生成的 Gridview - 更改列宽

转载 作者:行者123 更新时间:2023-12-02 04:48:49 26 4
gpt4 key购买 nike

我有麻烦了!

我动态地生成了很多 GridView ,其中列有动态值。列始终相同。

我想知道如何设置这些列的大小。

这是我的代码,我的努力。

    private void generateControls( List<List<DataRow>> grids)
{
DataTable dt = new DataTable();

int i = 0;
foreach (List<DataRow> lst in grids)
{
dt = lst.CopyToDataTable();

GridView grv = new GridView();
grv.AlternatingRowStyle.BackColor = System.Drawing.Color.FromName("#cccccc");
grv.HeaderStyle.BackColor = System.Drawing.Color.Gray;

grv.Width = new Unit("100%");
//grv.RowStyle.Wrap = false;
grv.RowStyle.Width = new Unit("100%");

grv.ID = "grid_view" + i;
grv.DataSource = dt;
grv.DataBind();

/* grv.Columns[0].ItemStyle.Width = new Unit("5%");
grv.Columns[1].ItemStyle.Width = new Unit("7%");
grv.Columns[2].ItemStyle.Width = new Unit("12%");
grv.Columns[3].ItemStyle.Width = new Unit("12%");
grv.Columns[4].ItemStyle.Width = new Unit("7%");
grv.Columns[5].ItemStyle.Width = new Unit("7%");
grv.Columns[6].ItemStyle.Width = new Unit("23%");
grv.Columns[7].ItemStyle.Width = new Unit("22%");
grv.Columns[8].ItemStyle.Width = new Unit("5%");*/

Label lblBlankLines = new Label();
lblBlankLines.Text = "<br />";

Panel panelGrid = new Panel();
panelGrid.ID = "panel_grid" + i;


Label lblTipo = new Label();
string tipoOcorrencia = lst[0]["Ocorrência"].ToString();

/*
* Capitalized
* TextInfo myTI = new CultureInfo("pt-BR", false).TextInfo;

string novoTipoOcorrencia = myTI.ToTitleCase(tipoOcorrencia);*/

int quantidade = lst.Count;
lblTipo.Text = " - " + tipoOcorrencia + ": " + quantidade;


LinkButton lkBtn = new LinkButton();
lkBtn.ID = "link_button" + i;
lkBtn.Text = "Exibir | Ocultar";
lkBtn.Attributes["onClick"] = "javascript:return ocultaGrid('" + panelGrid.ID + "'), false";

panel_status.Controls.Add(lblBlankLines);
panel_status.Controls.Add(lkBtn);
panel_status.Controls.Add(lblTipo);


panelGrid.Controls.Add(grv);

panel_status.Controls.Add(panelGrid);

panel_status.DataBind();

i++;
}
}

我试图获取列,但出现错误,告诉我无效的索引访问。我如何访问该 GridView 中的列?

最佳答案

使用 RowDataBound 事件处理程序:

计算您的索引并确保您没有尝试访问不存在的列。

查看示例链接:

http://msdn.microsoft.com/en-us/library/ms178296(v=vs.100).ASPX

grv.RowDataBound += grv_RowDataBound;

    private void grv_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowType == DataControlRowType.Header)
{

e.Row.Cells[0].Width = new Unit("5%");
e.Row.Cells[1].Width = new Unit("7%");
e.Row.Cells[2].Width = new Unit("12%");
e.Row.Cells[3].Width = new Unit("12%");
e.Row.Cells[4].Width = new Unit("7%");
e.Row.Cells[5].Width = new Unit("7%");
e.Row.Cells[6].Width = new Unit("23%");
e.Row.Cells[7].Width = new Unit("22%");
e.Row.Cells[8].Width = new Unit("5%");
}

}

关于c# - 自动生成的 Gridview - 更改列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19272840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com