【问题标题】:Cells in gridview lose controls on RowUpdating eventgridview 中的单元格失去对 RowUpdating 事件的控制
【发布时间】: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


    【解决方案1】:

    由于控件的工作方式,需要在每次页面加载时重新创建动态控件或列。动态控件不会被保留,因此您必须在每个页面回发时重新加载它们;但是,将为这些控件保留视图状态。

    HTH。

    【讨论】:

      【解决方案2】:

      调用这个函数 ShowDataInGrid(DateTime.Now.Month, DateTime.Now.Year);在你的

      Page_Init 事件。

      您将获得控制权和价值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多