2008-11-06 27 views
10

Tôi gặp sự cố với đoạn mã sau đây. Khi tôi đi qua với trình gỡ lỗi tôi nhận được một ngoại lệ khi nói đến các dòng sau:Không thể thêm cột vì thuộc tính CellType của nó là không có ngoại lệ

dgvCalls.Columns.Insert(1, msisnnColumn); 

tôi nhận được một ngoại lệ:

cột không thể được thêm vào vì sở hữu CellType của nó là null.

Thật kỳ lạ, tôi đã tạo thủ tục tương tự cho một số DataGridView khác và hoạt động tốt.

if (!(dgvCalls.Columns.Contains("DirectionImage"))) 
       { 
        directionIconColumn = new DataGridViewImageColumn(); 
        directionIconColumn.Name = "DirectionImage"; 
        directionIconColumn.HeaderText = ""; 
        dgvCalls.Columns.Insert(0, directionIconColumn); 
        directionIconColumn.CellTemplate = new DataGridViewImageCell(); 
       } 
       if (!(dgvCalls.Columns.Contains("msisndColumn"))) 
       { 
        msisnnColumn = new DataGridViewColumn(); 
        msisnnColumn.Name = "msisndColumn"; 
        msisnnColumn.HeaderText = "Klic"; 
        dgvCalls.Columns.Insert(1, msisnnColumn); 
        msisnnColumn.CellTemplate = new DataGridViewTextBoxCell(); 
       } 

Mọi đề xuất?

+0

Bạn có thể hiển thị mã ở định dạng dễ đọc hơn bằng cách đánh dấu nó và nhấp vào biểu tượng 0101010 nhỏ ngay phía trên văn bản chỉnh sửa. – DOK

Trả lời

17
dgvCalls.Columns.Insert(1, msisnnColumn); 
msisnnColumn.CellTemplate = new DataGridViewTextBoxCell(); 

Hãy thử lật hai dòng đó. Điều đó có thể làm các trick.

+0

Cảm ơn! Nó hoạt động. Tôi tự hỏi tại sao nó hoạt động theo hình thức khác nơi thứ tự khác! –

+1

Vấn đề là, vì bạn chỉ cần gán msisnnColumn cho một DataGridViewColumn mới() nó không biết CellType bạn muốn, vì vậy nó chỉ để trống nó. Vì vậy, khi bạn đã đi để chèn, nó thổi lên. Tuy nhiên, nếu bạn lần đầu tiên gán CellTemplate cho một TextBoxCell, nó biết những gì bạn muốn. – BFree

Các vấn đề liên quan