2010-04-21 84 views
1

我在Gridview中嵌套了一个中继器控件。现在它显示gridview行和中继器标题为每个案件(无论数据是否存在或中继控制器中的特定网格视图行)。当特定的gridview行没有数据时,我想隐藏gridview行和repeater控制头。在GridView中嵌套中继器:如果数据不在中继器中,隐藏gridview行和中继器头

谢谢, 这种情况下我通过筛选结果数据表在代码级处理。

现在我面临的另一个问题: 我已经允许在GridView上即页面大小寻呼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]。价值线被投掷错误。如何处理这个仅传递页面2的值。

回答

1

尝试处理网格的OnRowDataBound事件。这给你一个GridViewRowEventArgs对象(比如说e)。

然后,您可以查看e.Row.DataItem以获取要绑定的数据,以检查是否需要隐藏标题。

您可以使用e.Row.FindControl(“RepeaterName”)来让中继器进行操作。