現在看來,無論是lookupedit,Gridlookup,還是SearchLookUpedit都是PopupContainer的演化。
在PopupContainer上可以放置任意的控件。
這個中有一些需要記錄的東西。
手動調用顯示popupcontainer
((PopupContainerEdit) sender).ShowPopup();
適當方式發生的;
同樣 QueryResultValue事件是它關閉時發生的事件,有如下代碼
private
void repositoryItemPopupContainerEdit1_QueryResultValue(
object sender, QueryResultValueEventArgs e)
{
// 將彈出窗口中的信息返回。e.value就會把信息顯示在grid上
e.Value = ucDrag.gvDrug.GetRowCellValue(ucDrag.gvDrug.FocusedRowHandle, " F_NAME ");
// 設置grid上其他字段的數據
gvSDJHD.SetRowCellValue(gvSDJHD.FocusedRowHandle, " F_CODE ", ucDrag.DrugCode);
// 一返回后就全選當前cell中的全部文字,以便輸入錯誤再次修改。
TextEdit edit = gvSDJHD.ActiveEditor as TextEdit;
if (edit == null) return;
edit.SelectAll();
}
{
// 將彈出窗口中的信息返回。e.value就會把信息顯示在grid上
e.Value = ucDrag.gvDrug.GetRowCellValue(ucDrag.gvDrug.FocusedRowHandle, " F_NAME ");
// 設置grid上其他字段的數據
gvSDJHD.SetRowCellValue(gvSDJHD.FocusedRowHandle, " F_CODE ", ucDrag.DrugCode);
// 一返回后就全選當前cell中的全部文字,以便輸入錯誤再次修改。
TextEdit edit = gvSDJHD.ActiveEditor as TextEdit;
if (edit == null) return;
edit.SelectAll();
}
同樣,從上面可以看出,其實DevExpress中的gridview中的每一個單元其實還是textedit。知道這個就可以對它進行進一步的特殊處理。
我在PopupContainer中放置了另外一個GridControl,當點擊回車是執行選中記錄的操作。
private
void gridControl2_KeyPress(
object sender, KeyPressEventArgs e)
{
if (((Keys)e.KeyChar) == Keys.Enter)
{
if (gvDrug.RowCount > 0)
{
DrugCode = gvDrug.GetDataRow(gvDrug.FocusedRowHandle)[ " F_CODE "].ToString();
popupContainerControl1.OwnerEdit.ClosePopup();
}
}
{
if (((Keys)e.KeyChar) == Keys.Enter)
{
if (gvDrug.RowCount > 0)
{
DrugCode = gvDrug.GetDataRow(gvDrug.FocusedRowHandle)[ " F_CODE "].ToString();
popupContainerControl1.OwnerEdit.ClosePopup();
}
}
}
其中帶ClosePopup的一句就是關閉當前彈出窗口的操作語句。