2010-04-21 78 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」)來讓中繼器進行操作。