2014-01-26 65 views
0

我想在我的最後一行下的datagridview中添加一行,顯示記錄的摘要。所以我填充我的數據集,然後在其中添加一行,然後將它綁定到datagridview,然後當我嘗試賦值我的新行時,它給了我錯誤,無法將日期時間轉換爲字符串作爲第四列數據類型是datetime.SO我的問題是我們可以更改特定行單元格的列類型,如果沒有然後我怎樣才能做到我想做的事?將摘要添加到窗口中的datagridview窗體應用程序

string SelectGroupQuery = "Select * From GroupMembers Where [email protected] "; 
          using (SqlConnection conGroup = new SqlConnection(ConnectionString.ToString())) 
          { 
           using (SqlCommand commandGroup = new SqlCommand(SelectGroupQuery, conGroup)) 
           { 
            commandGroup.CommandType = CommandType.Text; 
            commandGroup.Parameters.Add(new SqlParameter("Id", Id)); 
            SqlDataAdapter da = new SqlDataAdapter(commandGroup); 
            DataSet ds = new DataSet(); 
            da.Fill(ds); 
            d1 = new DataGridView(); 
            this.Controls.Add(d1); 
            d1.Location = new Point(50,y); 
            d1.Size = new Size(600, 300); 
            dr = ds.Tables[0].NewRow(); 
            ds.Tables[0].Rows.Add(dr); 
            d1.DataSource = ds.Tables[0]; 
            d1.Columns[4].ValueType = typeof(string); 
            d1.Rows[d1.Rows.Count-2].Cells[4].Value = "Total Amount"; 
            y = y + 400; 
           } 
          } 

回答

0

對於某些列類型,可以更改特定單元格的類型。請參閱this回答。但我不會推薦它。

使用datagridview中的一行來顯示摘要是很棘手的,因爲它帶來了一些問題(綁定到數據庫時更多)。您可以使用datagridview外部的文本框創建摘要行,並將摘要數據添加到它們。查看this codeproject鏈接的工作示例。

0

您可以通過處理CellFormatting事件來僞造它,而不是將值賦給單元格。如果e.ColumnIndex = 4且e.RowIndex是網格中的最後一行,請將格式化的值設置爲所需的標籤,並設置EventArgs的屬性以告訴它您已格式化該值。

如果您不是將整個DataGridView設置爲只讀,您可能還想要處理CellBeginEdit事件並取消編輯(如果它是彙總行)。

相關問題