2010-03-16 35 views
5

Tôi muốn liên kết hộp văn bản với một đối tượng DataRow duy nhất (được chuyển đến biểu mẫu hộp thoại để chỉnh sửa). Đây là mã của tôi:Dữ liệu ràng buộcĐể vào hộp văn bản

DataRow row = myDataTable.NewRow(); 
EditForm form = new EditForm(row); 

//in EditForm constructor 
nameTextBox.DataBindings.Add("Text", row, "name"); 

và tôi gặp lỗi: Không thể liên kết với thuộc tính hoặc cột trong DataSource. Bạn có biết những gì tôi đang thiếu hoặc bất kỳ cách giải quyết có thể?

[Đã thêm]

DataTable của tôi chắc chắn chứa DataColumn với ColumnName = "name". Đây là mã của tôi để tạo DataTable

public DataTable SelectReturnDataTable(string tableName, string sql, params SQLiteParameter[] parameters) 
    { 
     using (SQLiteConnection conn = new SQLiteConnection(_connectionString)) 
     { 
      using (SQLiteCommand cmd = new SQLiteCommand(conn)) 
      { 
       cmd.CommandText = sql; 
       foreach (SQLiteParameter p in parameters) 
        cmd.Parameters.Add(p); 

       SQLiteDataAdapter da = new SQLiteDataAdapter(cmd); 
       DataTable dt = new DataTable(tableName);           

       conn.Open();      
       da.Fill(dt); 

       return dt; 
      } 
     } 
    } 
+0

'hàng' Liệu có một 'tên' cột? –

+0

có, chắc chắn là có. –

+0

bạn đã thử ràng buộc với datatable thay thế? –

Trả lời

0

Tôi cố gắng để tái sản xuất này (cùng với VS 2008 SP1), và tôi nhận được một InvalidCastException nếu hàng có dữ liệu null trong cột tên, nhưng chương trình vẫn tiếp tục và các công trình.

Để có ngoại lệ giống như bạn, tôi phải phạm sai lầm trong tên cột khi ràng buộc. Vì vậy, tôi cảm thấy bắt buộc phải lặp lại câu hỏi của @ Henk, hoặc yêu cầu bạn cho thấy cách bạn tạo DataTable.

+0

Tôi biết về InvalidCastException. Để tránh nó tôi đi với: Binding b = nameTextBox.DataBindings.Add ("Text", row, "name"); b.NullValue = ""; –

0

Có quá tải cho việc tạo ra một DataBinding trong một đối tượng để sử dụng trong trường hợp đối tượng nguồn là DBNull. Bạn có thể muốn thử điều đó.

2

Hãy thử điều này:

DataView dv = myDataTable.DefaultView; 

dv.RowFilter = "id=1"; 

nameTextBox.DataBindings.Add("Text",dv,"NAME"); 
Các vấn đề liên quan