2012-11-06 23 views
5

Tôi muốn một số hàng trong Ultragrid bị vô hiệu hóa tùy thuộc vào thuộc tính Đồng bộ hóa boolean trong hàng. Tôi đã nghĩ đến hai giải pháp khác nhau nhưng không phải đã làm việc.Infragistics Ultragrid Làm thế nào tôi có thể vô hiệu hóa một hàng tùy thuộc vào một tài sản

1) Tìm kiếm thuộc tính Đồng bộ hóa với thuộc tính Kích hoạt của hàng. Điều này có thể không?

2) Trong một sự kiện như sự kiện InitializeRow của lưới, hãy tìm hiểu xem thuộc tính Sync là gì và vô hiệu hóa hàng nếu nó được đặt thành true. Phương pháp này hoạt động ngoài nếu một số hàng khác sau đó được thêm vào lưới và lưới điện sau đó được lưu, dữ liệu sẽ tự sắp xếp lại để hàng bị vô hiệu hóa không chứa dữ liệu phù hợp. Vì vậy, tôi cần một cách để biết khi nào điều này xảy ra để tôi có thể đi qua và vô hiệu hóa các hàng bên phải một lần nữa sau đó.

private void ultraGrid1_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e) 
{ 
    e.Row.Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit; 
    if (e.Row.Cells[grdBoundGrip.DisplayLayout.Bands[0].Columns["Sync"]].Value != null && (bool)e.Row.Cells[grdBoundGrip.DisplayLayout.Bands[0].Columns["Sync"]].Value) 
      e.Row.Activation = Infragistics.Win.UltraWinGrid.Activation.Disabled; 
} 
+2

Bạn có thể hiển thị mã trong sự kiện InitializeRow không? – Steve

+0

Xin chào Steve, tôi đã thêm mã ở trên hoạt động tốt. Vấn đề là sau khi nhấp vào Lưu có một số mã mà cập nhật và thay đổi thứ tự của dataitems và tiếc là điều này không kích hoạt sự kiện InitializeRow một lần nữa. – Jim

+0

Tài liệu cho [InitializeRow] (http://www.infragistics.com/help/topic/5CCF90C4-EEF6-4F4D-A979-B6F505F93318) giải thích rằng sự kiện này cũng nên được gọi nếu bạn thay đổi giá trị của một ô đơn lẻ. Vì vậy, có một cái gì đó sau khi lưu lệnh ngăn chặn sự kiện này để bắn. Một lần nữa, mã sau lệnh save có thể giúp đỡ. – Steve

Trả lời

5

Bạn cũng có thể viết nó theo chức năng của riêng bạn. Tôi hy vọng giải pháp dưới đây có thể giúp bạn.

Tạo một cửa sổ hình "test" .. và kéo/thả một "ultragird" trong đó hình thức cửa sổ như hình dưới đây .. enter image description here

tạo một hàm hình thức nạp "test_Load" .. và cố gắng mã dưới đây .. hàng của bạn có đồng bộ hóa "false" bị tắt ..

private void test_Load(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Name", typeof(string)); 
     dt.Columns.Add("Address", typeof(string)); 
     dt.Columns.Add("Sync", typeof(string)); 
     dt.Rows.Add(new object[] {"John","United States","False" }); 
     dt.Rows.Add(new object[] { "Xing", "China", "True" }); 
     dt.Rows.Add(new object[] { "Ram", "Nepal", "True" }); 
     dt.Rows.Add(new object[] { "Germany", "Thomas", "False" }); 
     dt.Rows.Add(new object[] { "Pedrik", "Russia", "True" }); 

     ultraGrid1.DataSource = dt; 
     ultraGrid1.DataBind(); 

     DisableRowsWithSyncOff(dt.Rows.Count); 

    } 
    private void DisableRowsWithSyncOff(int _rowcount) 
    { 
     for (int i = 0; i < _rowcount; i++) 
     {     
      if (!Convert.ToBoolean(ultraGrid1.Rows[i].Cells["Sync"].Value.ToString())) 
      {      
       ultraGrid1.Rows[i].Activation = Infragistics.Win.UltraWinGrid.Activation.Disabled; 
      } 
     } 
    } 
Các vấn đề liên quan