Tôi đã tạo một vài lớp tùy chỉnh (NTDropDown
và NTBaseFreight
) mà tôi sử dụng để lưu trữ dữ liệu mà tôi lấy từ một DB. Tôi khởi tạo Danh sách NTBaseFreight
và 2 danh sách cho NTDropDown
.list.add có vẻ như đang thêm một tham chiếu đến đối tượng gốc?
tôi thành công có thể sử dụng List.Add
thêm cước vận chuyển vào danh sách giá cước, nhưng như tôi gỡ lỗi mã, 2 danh sách thả xuống của tôi chỉ chứa 1 NTDropDown
, mà luôn luôn có giá trị giống như NTDropDown
(Tôi giả định này là một tham khảo vấn đề, nhưng tôi đang làm gì sai)?
Để đưa ra một ví dụ, vào hàng thứ hai, nếu người vận chuyển và carrier_label
là "001", "MyTruckingCompany"
và tôi đặt một break câu lệnh if cho frt_carriers
, cả frt_carriers và frt_modes sẽ chỉ chứa 1 mục trong danh sách của họ, với các giá trị "001", "MyTruckingCompany"
... cùng giá trị trong NTDropDown
.
Code:
List<NTDropDown> frt_carriers = new List<NTDropDown>();
List<NTDropDown> frt_modes = new List<NTDropDown>();
List<NTBaseFreight> freights = new List<NTBaseFreight>();
NTDropDown tempDropDown = new NTDropDown();
NTBaseFreight tempFreight = new NTBaseFreight();
//....Code to grab data from the DB...removed
while (myReader.Read())
{
tempFreight = readBaseFreight((IDataRecord)myReader);
//check if the carrier and mode are in the dropdown list (add them if not)
tempDropDown.value = tempFreight.carrier;
tempDropDown.label = tempFreight.carrier_label;
if (!frt_carriers.Contains(tempDropDown)) frt_carriers.Add(tempDropDown);
tempDropDown.value = tempFreight.mode;
tempDropDown.label = tempFreight.mode_label;
if (!frt_modes.Contains(tempDropDown)) frt_modes.Add(tempDropDown);
//Add the freight to the list
freights.Add(tempFreight);
}
ok, tôi đã tìm ra ... Tôi cần khởi tạo NEW NTDropDown mỗi lần (không sử dụng lại tempDropDown nhiều lần). do đó, thêm 'tempDropDown = new NTDropDrop();' trước khi tôi sử dụng nó mỗi lần. Tôi có nên xóa câu hỏi này không? –
Không. Để lại câu hỏi. Giải quyết câu hỏi của riêng bạn vẫn hữu ích cho mọi người. – hometoast