2009-03-12 36 views
15

Tôi đã đặt một UltraGrid trên một điều khiển người dùng WinForms. Tôi đã chỉnh sửa một số cài đặt để tôi có thể sử dụng lưới làm bảng chọn nhiều hàng chỉ đọc. Nhưng có một vấn đề: theo mặc định, hàng đầu tiên dường như được chọn.Infragistics UltraGrid: làm thế nào để loại bỏ lựa chọn mặc định của hàng đầu tiên

Nhưng thuộc tính Selected.Rows trống và thuộc tính ActiveRownull.

Vì vậy, hàng dường như được chọn, nhưng thực tế không phải là hàng, khiến không thể xóa lựa chọn đó.

Tôi chắc chắn phải có cài đặt ẩn ở đâu đó trên UltraGrid để kiểm soát hành vi này. Và nếu đây không phải là trường hợp thì có thể có một cách giải quyết?

Cảm ơn.

Trả lời

21

Sau khi một số nghiên cứu thêm Tôi đã tìm thấy một giải pháp, mà tôi sẽ chia sẻ với tất cả các bạn:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset(); 
+0

Không hoạt động cho tôi hoặc Gianni. Và cách tiếp cận của Gianni thổi đi dữ liệu ListObject. Bạn có thể cung cấp bất kỳ trợ giúp nào tại sao nó có thể không hoạt động? Tôi lấy một lưới đơn giản với các thuộc tính mặc định và ràng buộc nó và sau đó xé 2 dòng được đề nghị. Không thay đổi. – ChadD

+0

Điều này làm việc cho tôi. Đối với những người bạn có vấn đề tương tự, hãy nhớ rằng có hai thuộc tính mà một hàng có thể có: 'Đã chọn' và 'Hoạt động'. Không thể chọn nhiều hoặc nhiều hàng, nhưng một và chỉ một hàng là Hoạt động. Thật không may, cả một hàng đã chọn và hàng đang hoạt động được (theo mặc định) được đánh dấu theo cùng một cách. Hàng hoạt động cũng được chỉ định bởi một tam giác trong tiêu đề hàng (nếu bạn đã kích hoạt tiêu đề hàng). Cuộc gọi ActiveRowAppearance.Reset() cho UltraGrid không làm nổi bật hàng đang hoạt động. Hi vọng điêu nay co ich. – AlfredBr

3

Tôi có exactely cùng một vấn đề bạn đã có, nhưng giải pháp Gerrie Schenck của không làm việc cho tôi . Tôi đã sử dụng mẹo này: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

Thao tác này sẽ xóa dữ liệu ListObject cho Hàng 0. – ChadD

1

Bằng cách nào đó, không có giải pháp nào được liệt kê ở trên phù hợp với tôi. Trong trường hợp của tôi, tôi chỉ muốn kích hoạt/lựa chọn không xảy ra chút nào. Vì vậy, tôi đã làm như sau. Nó có thể không phải là giải pháp tốt nhất, nhưng nó hoạt động.

private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e) 
    { 
     LayoutVisulizerUltraGrid.ActiveRow = null; 
    } 
3

thử điều này:

this.ultraGrid1.SyncWithCurrencyManager = false; 
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False; 
+1

Cảm ơn bạn. Điều này khiến tôi phát điên. – Keith

+0

Cảm ơn, wow điều này rất tối nghĩa. – Mangist

3

này đã giúp tôi trong việc đàn áp các "Active Appearance" của một mạng lưới:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

Nếu bạn cũng không muốn có một hàng để được đánh dấu như đã chọn, bạn phải làm tương tự cho "Giao diện được chọn":

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 
0

Tắt toàn bộ hàng đã chọn, sau đó đặt ActiveRow thành giá trị rỗng sẽ xóa lựa chọn.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None; 
2

Điều quan trọng là phải phân biệt giữa Được chọn và Hoạt động. Lưới không bao giờ tự động chọn bất kỳ hàng nào Những gì bạn đang nhìn thấy là ActiveRow, sẽ hiển thị với điểm đánh dấu giống như các hàng đã chọn.

ActiveRow của lưới được đồng bộ hóa với Trình quản lý ngoại tệ, do đó theo mặc định hàng đầu tiên của lưới sẽ xuất hiện được đánh dấu. Đặt lại ActiveRowAppearance và ActiveCellAppearance sẽ xóa điểm đánh dấu mặc định khỏi ActiveRow.

 this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
     this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset(); 

Nhưng điều quan trọng cần lưu ý là điều này không ngăn hàng trở thành hàng đang hoạt động, nó chỉ là lưới không còn làm nổi bật hàng đang hoạt động nữa. Kể từ khi hàng vẫn còn hoạt động (và không có cách nào để ngăn chặn điều này) bất cứ điều gì khác làm nổi bật hàng hoạt động vẫn sẽ làm nổi bật hàng. Ví dụ: nếu bạn tải một tệp Thư viện kiểu (* .isl) vào ứng dụng của bạn áp dụng kiểu cho ActiveRow, nó sẽ vẫn hiển thị.

Nếu bạn muốn vô hiệu hóa sự xuất hiện hàng hoạt động theo một cách triệt để hơn, hoàn toàn bỏ qua tất cả các thiết lập bất động sản và các thiết lập Thư viện Style, bạn có thể làm điều này:

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

Lưu ý rằng thuộc tính này đã được bổ sung trong phiên bản 9. 2 và không tồn tại trong các phiên bản cũ hơn.

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