2013-04-30 260 views
4

我使用.NET 4.5,我發現這個奇怪的行爲:詳細信息查看綁定空數據表時的錯誤?

標記:

<asp:DetailsView ID="dtvTest" AutoGenerateRows="true" DefaultMode="Insert" runat="server" /> 

代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable("Test"); 
    dt.Columns.Add("Column", typeof(string)); 
    // If I uncomment the line it works! 
    // dt.Rows.Add("row 1"); 
    dtvTest.DataSource = dt; 
    dtvTest.DataBind(); 
} 

結果是

集合不能爲空。參數名稱:c

dtvTest.DataBind()。

如果至少有一排有效! (見註釋行)。

關於如何解決/解決它的任何想法?

非常感謝

回答

1

我已經在我最近我通過結合空行解決了它的項目面臨着相同的概率colleciton如下,(順便說一句我在烏拉圭回合的解決方案編譯它,它工作得很好)

protected void Page_Load(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable("Test"); 
     dt.Columns.Add("Column", typeof(string)); 

     // If I uncomment the line it works! 
     // dt.Rows.Add("row 1"); 

     dt.LoadDataRow(new string[1],true); 
     dtvTest.DataSource = dt; 

     dtvTest.DataBind(); 

    } 

,也不管你添加多少列仍然有效。

關於

+0

謝謝@King A.Majid。這不是解決方案,但幫助了我。我更新了acceptChanges標誌,並在綁定detailsview(我不想要空行)後調用拒絕更改。 – 2013-05-07 12:07:33

+0

我很高興我們都在同一個極限編程世界 – Adam 2013-05-08 21:22:20

+0

我想我可能會遇到這個bug,我的問題在這裏:http://stackoverflow.com/questions/23896437/insert-into-an-empty -database-表使用-ASP網 – Ben 2014-06-09 20:33:08

0

也許檢查行是否存在問題?

if (table.Rows.Count > 0) 
    { 
    DataBind(); 
    } 

此外,this可能是有用的和this溶液。

+1

詳細信息視圖允許插入。如果我不叫數據綁定,我將不會有GUI來添加一個新項目 – 2013-05-01 07:52:07

+1

是的,我知道DataBind。奇怪的是,如果沒有數據,導致錯誤,如果沒有數據,導致.NF 3.5一切正常 - 頁面上沒有顯示任何內容,沒有例外。 – 2013-05-01 12:20:53

+1

是的!這似乎也是一個錯誤,因爲我期望同樣的行爲爲空表而不是空表...從.net 4有一個例外,但它仍然不能正常工作 – 2013-05-01 12:30:44