代码之家  ›  专栏  ›  技术社区  ›  Austin Salonen gmlacrosse

ASP.NET:当列不可见时,GridView值设置为null

  •  1
  • Austin Salonen gmlacrosse  · 技术社区  · 16 年前

    我使用对象列表作为GridView的数据源,当我将列设置为不可见时,更新失败,因为这些列的值更改为null(并且该列不允许null)。当列可见时,这些值确实存在,但我确实不想显示这些列,因为在大多数情况下,它们是用户不需要看到的ID列。

    编辑:我尝试了隐藏字段选项,但它仍然将值设置为null。我已经查看了页面源代码,并且隐藏的字段具有适当的值。。。

    5 回复  |  直到 16 年前
        1
  •  3
  •   Austin Salonen gmlacrosse    16 年前

    我发现这个解决方案可以模拟.Net 2.0中的隐藏列:

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[1].Visible = false;
        e.Row.Cells[2].Visible = false;
    }
    

    http://www.beansoftware.com/ASP.NET-Tutorials/GridView-Hidden-Column.aspx

    我猜在2.0中,当一列不可见时,该列的数据绑定失败,但该方法在链接建立后隐藏,因此会欺骗系统(?)。

        2
  •  1
  •   YeahStu    15 年前

    Microsoft recommends using the DataKeyNames property

    <asp:GridView ID="GridView1" runat="server" 
            DataKeyNames="SalesOrderID,SalesOrderDetailID"
            DataSourceID="LinqDataSource1">
    

    这样,字段将不会显示给用户,但GridView知道保留值以进行更新等。

        3
  •  0
  •   Dillie-O    16 年前

    如果您还没有这样做,我会考虑使用模板列来为您的数据和“手动”数据绑定(“内联”或在代码隐藏页使用RealDigabyEngage事件)。这样,您就可以测试DBNull,如果值为NULL,则只需忽略在列中放入值。这也将允许正确隐藏列。

        4
  •  0
  •   Richard L    16 年前

    您可以对不想显示的值使用隐藏字段。这样,您仍然可以使用与今天相同的数据绑定和其他功能。

        5
  •  0
  •   wattostudios user1023319    12 年前

    当GridView中的字段不可见时,其单元格值将无法访问,或者这些值为null或空。

    为了解决这个问题,只需通过执行以下操作将列名(隐藏字段)分配给GridView的DataKeyNames属性 DataKeyNames="colName1,colName2,colName3" .

    cellValue = GridView1.DataKeys[0]["ID"].ToString();

    我已经写了一篇简单的帖子,演示了如何解决你的问题 here .

    推荐文章