2009-01-06 74 views
1

我使用對象列表作爲我的GridView的數據源,當我將列設置爲不可見時,更新失敗,因爲這些列的值被更改爲空(並且列不允許爲空)。這些值在列可見時確實存在,但我真的不希望顯示這些列,因爲大多數情況下它們是用戶不需要查看的ID列。ASP.NET:當列不可見時,GridView值設置爲空

編輯:我試過隱藏的字段選項,但它仍然將值設置爲空。我已經看過頁面源和隱藏字段存在與適當的值...

+0

任何方式,你可以給我們一些代碼,你的GridView和你的代碼背後? – 2009-01-06 22:39:26

回答

3

我發現這個解決方案來模擬.NET 2.0中隱藏的列:

落實GridView.RowCreated事件。

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.Cells[1].Visible = false; 
    e.Row.Cells[2].Visible = false; 
} 

這裏的鏈接:http://www.beansoftware.com/ASP.NET-Tutorials/GridView-Hidden-Column.aspx

我想在2.0時,一列是不可見的該列中的數據綁定失敗,但這種方法隱藏後的鏈路已經建立,因此招數系統(? )。

0

如果你還沒有這樣做,我會考慮使用模板列的數據和做「手動」數據綁定(使用RowDataBound事件「inline」或在頁面後面的代碼中)。這樣你可以測試DBNull,並且如果值爲NULL,那麼只需忽略在列中放置一個值。這也將允許列正確隱藏。

+0

你是說如果一列不可見,其默認值爲空? – 2009-01-06 15:20:17

0

您可以使用隱藏字段爲您不想顯示的值執行此操作。這樣你仍然可以像現在一樣使用相同的數據綁定和其他功能。

1

Microsoft recommends using the DataKeyNames property GridView控件。

而不是使用代碼隱藏隱藏某些列的,你可以在GridView刪除綁定字段和DataKeyNames屬性指定它們:

<asp:GridView ID="GridView1" runat="server" 
     DataKeyNames="SalesOrderID,SalesOrderDetailID" 
     DataSourceID="LinqDataSource1"> 

這樣的字段將不會顯示給用戶但GridView知道保持更新值等。

0

當GridView內的字段變爲不可見時,其單元格值不可訪問,或者它們爲空或空。

爲了解決這個問題,您只需要通過執行DataKeyNames="colName1,colName2,colName3"將列名(隱藏字段)分配給GridView的DataKeyNames屬性。

然後訪問它們的細胞值cellValue = GridView1.DataKeys[0]["ID"].ToString();

我寫了一個簡單的演示後在here解決您的問題。

相關問題