【发布时间】:2010-01-06 10:11:02
【问题描述】:
我对 C# 与 ASP.NET 的组合还很陌生,所以我会尽量解释清楚。
我使用 GridView 来显示数据库中的一些列和行。这很好用。因为我想从名称列表中动态添加列。假设我们有一个包含 5 个名称的列表,然后它会为 GridView 中的每个名称动态创建一个列。 这是一些代码来显示我的工作:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Create columns for each student
List<Student> allStudents = new Eetlijst.Business.Students().GetAll();
allStudents.Reverse();
foreach (Student student in allStudents)
{
StudentBoundField studentField = new StudentBoundField();
studentField.HeaderText = student.Naam;
MaaltijdGrid.Columns.Insert(4, studentField);
}
ShowDataInGrid(DateTime.Now.Month, DateTime.Now.Year);
里面还有一些不重要的东西。 ShowDataInGrid 如下所示:
public void ShowDataInGrid(int maand, int jaar)
{
List<Maaltijd> allMaaltijden = new Eetlijst.Business.Maaltijden().GetByMonthAndYear(maand, jaar);
Session.Contents.Add("maaltijden", allMaaltijden);
MaaltijdGrid.DataSource = allMaaltijden;
MaaltijdGrid.DataBind();
}
如何为每一行创建动态列? 我使用 DataBound 事件创建它们。因此,当 GridView 数据绑定时,列会被数据填充。里面还有一个检查来查看该行是否处于编辑模式。因此,当我单击行旁边的编辑按钮时,该行在编辑模式下完美运行。我制作的代码向单元格添加了一个 TextBox 控件。 当我填写一个值并按下更新按钮时,它再也找不到任何控件,因此我无法获得我输入的值。当我在它之后放置一个断点时,控件仍然存在于 DataBound 中。但是当我点击更新按钮时,单元格的所有控件都消失了。
我在互联网上搜索,我发现它与应用程序在到达 RowUpdating 方法之前触发回发有关。
那么,当单元格处于编辑模式时,如何让我添加到单元格的控件存在?
如果有人需要 DataBound 事件中的代码,我会发布它。
【问题讨论】:
标签: c# .net asp.net gridview controls