隐藏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 <> ''