2013-07-17 32 views
5

Các nhà phát triển, Tôi có một trang danh sách tùy chỉnh, nơi người dùng có thể chọn ít bản ghi, nhấn một nút trong ngăn Hành động chạy một số logic trong một lớp và tất cả đều hoạt động tốt . Vấn đề của tôi là con trỏ không ở cùng một bản ghi nhưng lại đi lên trên cùng của lưới. Âm thanh như một vấn đề quen thuộc?Con trỏ di chuyển lên trên cùng khi lưới trang danh sách làm mới

Tôi lưu trữ FormDataSource của trang danh sách bằng cách sử dụng arg trong lớp tùy chỉnh có tất cả logic.

Tôi đã thử vài thứ nhưng không có tác dụng nào.

  1. formDataSource.research (true) tham số Đúng là nghĩa vụ phải giữ lại vị trí sau khi nghiên cứu thực hiện công việc của mình. Tôi đoán đây là giải pháp đơn giản nhất. Truy vấn trang danh sách có 2 nguồn dữ liệu được kết hợp bằng cách sử dụng tham gia bên ngoài và dự đoán của tôi là nghiên cứu (đúng) chỉ hoạt động với các kết nối bên trong.

  2. formDatasource.setPosition (vị trí) vị trí

    int;
    position = formDatasource.getPosition();

    formDatasource.research();

    biểu mẫuDatasource.setPosition (vị trí);

    Tôi lưu trữ vị trí bằng cách sử dụng getPosition và đặt lại vị trí bằng cách sử dụng setPosition. Không sử dụng.

  3. formDataSource.findRecord()

    currentRecord = formDatasource.cursor();

    recId = currentRecord.RecId;
    formDatasource.reread();

    formDatasource.research();
    formDatasource.findRecord (currentRecord);

    tôi sử dụng ds.cursor() để lấy bản ghi hiện tại và chuyển nó tới findRecord() sau khi nghiên cứu(). Không sử dụng.

  4. formDataSource.findValue()

    currentRecord = formDatasource.cursor();

    recId = currentRecord.RecId;
    formDatasource.reread();

    formDatasource.research();
    biểu mẫuDatasource.findValue (fieldNum (Bảng, RecId), int642str (recId));

    tôi sử dụng ds.cursor() để lấy bản ghi hiện tại và recId và chuyển nó tới findValue() sau khi nghiên cứu(). Không sử dụng.

Tôi đã sửa lỗi mã trên và phương thức cursor() không nhận được bản ghi hiện tại và recId của nó. Tôi đã bắt đầu tin rằng nó có thể là một giới hạn của trang danh sách, và cầu nguyện rằng ai đó chứng minh tôi sai.

Mọi trợ giúp đều được đánh giá cao.

+0

Bạn cũng có thể thử bằng cách sử dụng macro tác vụ và gọi # taskF5 để làm mới biểu mẫu. Kết quả này giống như cách nhấp vào nút làm mới trên các trang danh sách. bạn có thể tham khảo http://msdn.microsoft.com/en-us/library/hh812104.aspx để biết thêm chi tiết. –

+0

'nghiên cứu' có tham số boolean tùy chọn để giữ lại vị trí trong lưới. Để có tổng quan tuyệt vời, hãy xem http://kashperuk.blogspot.com.es/2010/03/tutorial-reread-refresh-research.html –

Trả lời

2

Sử dụng phương pháp 3 nhưng như thế này.

YourTable tmpTable; 


currentRecord = formDatasource.cursor(); 

recId = currentRecord.RecId; 
tmpTable = TmpTable::findByRecId(recId); 
formDatasource.reread(); 

formDatasource.research(); 
formDatasource.findRecord(tmpTable); 

Hy vọng điều này sẽ hữu ích.

+0

// chỉ cần đặt recId của tmpTable-Bộ đệm: JUW_tmpCostCân độ tính toánDummy; ; positionDummy.recId = JUW_tmpCostCalculation.recid; JUW_tmpCostCalculation_DS.research(); JUW_tmpCostCalculation_DS.findRecord (positionDummy); –

0

Cố gắng chuyển "true" làm thông số cho phương pháp nghiên cứu. salesLine_ds.research (true) hoạt động trong trường hợp của tôi, tức là nếu tôi nghiên cứu dòng, con trỏ vẫn nằm trên cùng một dòng.

0

sử dụng phương pháp thứ hai như thế này

int position; 
position = formDatasource.getPosition(); 
//Make your update operations here 
formDatasource.research(true); 

formDatasource.setPosition(position); 

Nó làm việc cho tôi.

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