我正在尝试根据绑定DataTable
中的关联列找出GridView中的单元格可见的方式。我相信我遇到的问题是这个表是动态的,也许随着行添加到表中,表格不会在asp页面上重新填充/重新刷新。
以下是该方案: 我有一个表,例如,有三列和一行。第1列是索引,第2列是名称,第3列是true或false,用于设置asp页面中链接的可见性。
第1行已经设置为1, John Doe, false
所以在asp页面上你看到的只有
1 | John Doe
您可以点击下拉列表,单击名称,然后将此名称添加到数据表中。默认情况下,第3列插入true
值。因此,在将行插入表格后,该行将反映在asp页面上,如此
1 |约翰·多伊 2 |简·多伊
但是因为第3列是真的,我想要一个'删除'按钮是可见的,所以asp页面看起来会像这样
1 |约翰·多伊 2 | Jane Doe |删除
其中'删除'是删除新插入行的链接。
我发现this认为这正是我所需要的,但“删除”链接仍然无法在GridView中显示。
我忽略了什么,以便我可以根据asp:LinkButton
中的单元格值显示DataTable
(或任何等效的链接)?
添加RowDataBound事件处理程序函数。
protected void NamesGV_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.Header) {
for (int i = 0; i < e.Row.Cells.Count; i++) {
e.Row.Cells[i].BackColor = System.Drawing.Color.Beige; ;
}
}
}
答案 0 :(得分:1)
所以这样的事情......没有经过测试,所以你可能需要稍微调整一下:
protected void NamesGV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
e.Row.Cells[i].BackColor = System.Drawing.Color.Beige;
}
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
//Get reference to the button you want to hide/show
LinkButton delButton = CType(e.Row.Cells(2).FindControl("lbYourLinkButtonId"), LinkButton);
//check your data for value
bool visible = (bool)DoACheckForAValue(NamesGV.DataKeys(e.Row.RowIndex).Value);
delButton.Visible = visible;
}
}