2011-03-14 145 views
1

請查看下面的代碼,告訴我哪裏出錯了。列不允許有空值

case "particulars.aspx": 
    dt = JobCardManager.GetParticularsByJobId(id); 
    hidJobId.Value = id.ToString(); 
    if (dt != null && dt.Rows.Count > 0) 
    { 
     gvParticulars.DataSource = dt; 
     gvParticulars.DataBind(); 
    } 
    else 
    { 
     **dt.Rows.Add(dt.NewRow());** 
     gvParticulars.DataSource = dt; 
     gvParticulars.DataBind(); 

     int TotalColumns = gvParticulars.Rows[0].Cells.Count; 
     gvParticulars.Rows[0].Cells.Clear(); 
     gvParticulars.Rows[0].Cells.Add(new TableCell()); 
     gvParticulars.Rows[0].Cells[0].ColumnSpan = TotalColumns; 
     gvParticulars.Rows[0].Cells[0].Text = "No Record Found"; 
    } 

    ddlJobs.Enabled = false; 
    gvParticulars.ShowFooter = true; 
    break; 

我想實現的是,在情況下,當dt沒有任何行,我需要在頁腳中顯示一個新行,控制已經在頁腳添加。我的插入更新和添加新進程都是從網格本身執行的。

因此,如果我的datatable爲空,然後在星號行,我收到錯誤,「列不允許爲空」。數據庫中所有列都有「允許空」複選框被選中。請幫忙。

[更新]

我不是retriving查詢主鍵。只有表格的可編輯部分。

+0

您是否在允許所有空值後重新輸入已輸入的數據集? – 2011-03-14 10:18:15

+0

其實我的方法是返回數據表...所以我需要總和的方式把檢查放在返回表 – 2011-03-14 10:21:04

回答

3

當您填充數據集時,您可能需要閱讀架構信息。我不確定這是否會解決您的問題,但我懷疑它會。沒有模式,你的數據表不知道該列是否接受null。

da.FillSchema(ds, SchemaType.Source); 
da.Fill(ds); 
1

只是一個猜測,但所有的列不能爲空,列定義爲主鍵呢?

+0

我沒有檢索主鍵在我的查詢....只有可編輯columsn – 2011-03-14 10:19:40