2013-10-29 36 views
0

我使用如何使幾個gridview列動態不可見?

e.Row.Cells[0].Visible = false; 

,使一列不可見。它的工作原理,但是當我嘗試添加另一個像這樣:

e.Row.Cells[0].Visible = false; 
e.Row.Cells[1].Visible = false; //i tried listing all and still got the out of range error 

我得到Specified argument was out of the range of valid values. Parameter name: index

我使用在GridView的RowDataBound事件的命令,從0開始在GridView有12列

+0

您是否設置了斷點檢查您在運行時GridView控件綁定到數據?另外,你的gridview設置爲autogeneratecolumns = true? – nycdan

回答

1
錯誤

考慮到GridView有一些不是數據的行(尋呼機,頁腳等)。

我會說你應該有這樣的東西,所以你只應用隱藏邏輯DataRow元素。

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    e.Row.Cells[0].Visible = false; 
    e.Row.Cells[1].Visible = false; 
} 

要查看所有行類型,請選擇this MSDN article

+1

我相信,如果你隱藏列,你不需要在DataRow部分做到這一點。不確定,但我認爲列標題和數據中的列數應該一致。 – nycdan