我将我的数据从Excel工作表导入到网格视图。之后我想将网格视图的列标题文本放入下拉列表,但我无法访问它们 帮帮我PLZ :-(;
这是我的代码,但不起作用:
List<string> lst = new List<string>();
* for (int i = 0; i < dg_excel.Columns.Count; i++)
{
lst.Add(dg_excel.Columns[i].HeaderText);
}
ddl_prd_count.DataSource;
ddl_prd_count.DataBind();
对于这条*
行,它告诉我没有列(column.count = 0)
答案 0 :(得分:1)
检查另一个SO帖子answer上的Why column count is 0 for GridView,了解您为什么无法访问网格列集合中的列。
在我看来,如果您想使用自动生成的列,请按照此ASP.net论坛链接 - Customizing Auto Generated Columns (GridView)和SO帖子How to hide columns in an ASP.NET GridView with auto-generated columns?。
e.g。 从这段代码中有一个想法..我还没有检查其中的正确语法等。
protected void MyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
if (IsFillCombo)
{
//fill your list here.
for (int i = 0; i < datasourcetable.Columns.Count; i++)
{
lst.Add(e.Row.Cells[i].Text);
}
IsFillCombo = false;
}
}
}
//实现此方法的另一种最简单的方法如下:来自Question Text
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Abc> listofAbc = new List<Abc>();
for (int i = 0; i < 10; i++)
{
listofAbc.Add(new Abc
{
ID = i + 1,
Name = "Abc" + (i + 1).ToString()
});
}
GridView1.DataSource = listofAbc;
GridView1.DataBind();
List<string> lst = new List<string>();
for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
{
lst.Add(GridView1.HeaderRow.Cells[i].Text);
System.Diagnostics.Debug.WriteLine(GridView1.HeaderRow.Cells[i].Text);
}
}
}
}
public class Abc
{
public int ID { get; set; }
public string Name { get; set; }
}
答案 1 :(得分:1)
您可以使用以下代码
List<string> lst = new List<string>();
for (int i = 0; i < dg_excel.HeaderRow.Cells.Count; i++)
{
lst.Add(dg_excel.HeaderRow.Cells[i].Text);
}
ddl_prd_count.DataSource=lst ;
ddl_prd_count.DataBind();
答案 2 :(得分:0)
访问您网格的gridView1_CellValueChanged
事件
然后访问e.Column.FieldName.ToString()