现在看来,无论是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的一句就是关闭当前弹出窗口的操作语句。