隐藏asp.net中的gridView行

我正在创建一个gridView ,它允许通过将插入所需的控件添加到FooterTemplate中来添加新行,但是当ObjectDataSource没有记录时,我添加一个虚拟行,因为FooterTemplate仅在有数据时显示。

我怎么能隐藏这个虚拟行? 我已经尝试在RowDataBound上设置e.row.visible = false但该行仍然可见。

请尝试以下方法

  protected void GridView1_DataBound(object sender, EventArgs e) { GridView1.Rows[0].Visible = false; } 

您可以处理gridview的数据绑定事件并隐藏虚拟行。 (不要忘记在aspx代码中分配event属性):

 protected void GridView1_DataBound(object sender, EventArgs e) { if (GridView1.Rows.Count == 1) GridView1.Rows[0].Visible = false; } 

我想这就是你需要的:

     itemtext   insert controls     

和代码隐藏:

 protected void OnRowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes["style"] = "display:none"; } } 

但我不明白为什么要将“插入控件”添加到页脚而不是将它们放在网格下面。

也许试试:

 e.Row.Height = Unit.Pixel(0); 

这不是正确的答案,但它可能同时起作用,直到你得到正确的答案。

也许用CSS来设置display none?!

这是GridView控件的错误用法。 GridView控件有一个特殊的InsertRow,这是你的控件应该去的地方。

GridView有一个特殊属性来访问Footer Row,名为“FooterRow”

然后,你冷试试yourGrid.FooterRow.Visible = false;

我在之前的工作中做过这个,但是因为你可以添加行,所以我总是在页脚行中看到它。 为了使网格显示,我绑定了一个通常绑定的类型的空行

 dim row as Datarow = table.NewRow() table.AddRow(row) gridView.DataSource = table gridView.Databind() 

然后它有所有列,然后你需要。 您可以通过拉这个来访问页脚:

 'this will get the footer no matter how many rows there are in the grid. Dim footer as Control = gridView.Controls(0).Controls(gridView.Controls(0).Controls.Count -1) 

然后访问页脚中的任何控件,你会去做:

 Dim cntl as Control = footer.FindControl() 

我假设你能做到:

 footer.Visible = false 

使页脚行不可见。

我希望这有帮助!

编辑我只知道你说了什么。 我基本上删除了添加新行时的行,但要执行此操作,您需要检查是否有其他行,如果有,请检查其中是否有值。

要删除虚拟行,请执行以下操作:

 If mTable.Rows.Count = 1 AndAlso mTable.Rows(0)() Is DBNull.Value AndAlso mTable.Rows(0)() Is DBNull.Value AndAlso mTable.Rows(0)() Is DBNull.Value Then mTable.Rows.Remove(mTable.Rows(0)) End If mTable.Rows.Add(row) gridView.Datasource = mTable gridView.Databind() 

你为什么不使用EmptyDataTemplate? 它似乎工作得很好,即使我只使用它几天……

您应该在GridView中使用DataKeyNames:

然后在你的代码上检索它: GridView1.DataKeys[0].Value.ToString()

其中“0”是您想要获得“FooID”的行号

要使其可见,只需使用:

 Gridview.Rows.Item(i).Attributes.Add("style", "display:block") 

并使其隐形

 Gridview.Rows.Item(i).Attributes.Add("style", "display:none") 

如果您不希望在列/行为空时显示数据:

 if (!String.IsNullOrEmpty(item.DataName)) { e.Row.Visible = false; } 

它可以通过SQL轻松完成

 USE YourdatabaseName select * from TableName where Column_Name <> ''