我在Gridview中嵌套了一个转发器控件。现在它为每种情况显示gridview行和转发器头(无论数据是否存在于转发器控件中的特定网格视图行)。我希望在特定gridview行没有数据时隐藏gridview行和转发器控件头。
谢谢, 这种情况我通过过滤结果数据表在代码级别处理。
现在我面临的另一个问题是: 我已经允许在gridview上进行分页,即pagesize 3。 页面加载时它工作正常,但是当我转到第2页时,它会生成以下错误: 指数超出范围。必须是非负数且小于集合的大小。参数名称:index
下面是在网格的rowdatabound事件上填充网格,分页和填充转发器的代码。
private void FillGrid()
{
clsCustomFunctions objShort = new clsCustomFunctions();
grd1.DataSource = objShort.GetAll();
}
protected void grd1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
FillGrid();
grd1.PageIndex = e.NewPageIndex;
grd1.DataBind();
}
catch (Exception ex)
{
lblMsg.Text = ex.Message;
}
}
protected void grd1_RowDataBound(object sender, GridViewRowEventArgs e)
{
clsCustomFunctions objShort = new clsCustomFunctions();
if (e.Row.RowType == DataControlRowType.DataRow)
{
((HtmlTable)e.Row.FindControl("gridTable")).BgColor = "#006699";
Repeater rpt = (Repeater)e.Row.FindControl("rpt1");
rpt.DataSource = objShort.GetResult(Convert.ToInt32(grd1.DataKeys[e.Row.DataItemIndex].Value));
rpt.DataBind();
}
}
grd1.DataKeys [e.Row.DataItemIndex] .Value行正在抛出错误。如何处理它只传递第2页的值。
答案 0 :(得分:1)
尝试处理网格的OnRowDataBound事件。这为您提供了一个GridViewRowEventArgs对象(比如说e)。
然后,您可以查看e.Row.DataItem以获取它绑定的数据,以检查是否需要隐藏标题。
您可以使用e.Row.FindControl(“RepeaterName”)让转发器根据需要进行操作。