1
我從表中讀取一些數據並將數據複製到cxGrid中的一列,然後我想直接將其更新到數據庫。 這有可能嗎?Delphi,cxGrid設置列值並更新數據庫
我一直在使用setEditValue嘗試,但一個需要類型的參數:
TcxDataEditValueSource = (evsValue, evsText, evsKey);
我能」找到這種類型。 在DeveloperExpress的一些例子中,他們將其設置爲1,但這不起作用。這是錯誤的類型說是編譯器。
這是我用來使數據進入網格的代碼,但是我可以讓它更新數據集嗎?
var
RecIDx,
ColIdx,
sorNo,
RecID,
i: integer;
AB,
AT: double;
begin
try
// Get marked row and column
RecIDx := grGeneralInfoMallDBTableView1.Controller.SelectedRecords[0]
.RecordIndex;
ColIdx := grGeneralInfoMallDBTableView1.DataController.GetItemByFieldName
('ID').Index;
// Get SortingOrderNo
sorNo := grGeneralInfoMallDBTableView1.DataController.Values
[RecIDx, ColIdx];
// Get AB and AT from SortingOrderRow with highest priority (lowest number)
dmsSortOrder.sq_Get_AB_AT.Active := false;
dmsSortOrder.sq_Get_AB_AT.ParamByName('sorNo').AsInteger := sorNo;
dmsSortOrder.sq_Get_AB_AT.Active := true;
dmsSortOrder.sq_Get_AB_AT.First;
if dmsSortOrder.sq_Get_AB_AT.EOF then
begin
showMessage('ERROR! Could not find record for sortorder: ' +
intToStr(sorNo));
exit;
end;
// Copy AT and BT to the grid.
AT := dmsSortOrder.sq_Get_AB_AT.FieldByName('AT').AsFloat;
AB := dmsSortOrder.sq_Get_AB_AT.FieldByName('AB').AsFloat;
// Set the cell value
grGeneralInfoMallDBTableView1.DataController.DataSource.DataSet.Edit;
ColIdx := grGeneralInfoMallDBTableView1.DataController.GetItemByFieldName
('AT').Index;
grGeneralInfoMallDBTableView1.DataController.SetValue(RecIDx,ColIdx, AT);
ColIdx := grGeneralInfoMallDBTableView1.DataController.GetItemByFieldName
('AB').Index;
grGeneralInfoMallDBTableView1.DataController.SetValue(RecIDx,ColIdx, AB);
grGeneralInfoMallDBTableView1.DataController.DataSource.DataSet.Post;
finally
end;
end;
如果你的GridView的數據綁定,你應該能夠簡單地更新基礎'TDataSet'領域。 – nil
你真叫醒我!我改變了上面的代碼以顯示我是如何做到的。簡單,我不需要以這種方式將數據添加到網格。謝謝! – larand
您的歡迎。順便說一句,你現在改變了你的問題,不再是問題。將這個改變回復到這個問題會更好。發表你自己的答案與你如何解決它是絕對好的。 – nil