dev GridControl 代码自定义下拉框

摘要:
前提条件是将相应的列绑定到值ListsettleTypeList=null;IPSettleServiceipSettleService=newIPSettleService();settleTypeList=ipSettleService.GetSettleTypeList();PrePayUseGrid.AddLookUpEditResponsibility<PubType>(

前提需要先把对应列绑定一个值

List<PubType> settleTypeList = null;
IPSettleService ipSettleService = new IPSettleService();
settleTypeList = ipSettleService.GetSettleTypeList();
PrePayUseGrid.AddLookUpEditResposibility<PubType>("RefundType", settleTypeList, "Name", "KeyFlag", true);

public void AddLookUpEditResposibility<T>(string columnName, List<T> items, string displayMember, string valueMember, bool onlyShowDisplayColumnInDropDownWindow = false)
{
RepositoryItemLookUpEdit resp = new RepositoryItemLookUpEdit();
resp.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
resp.NullText = string.Empty;

if (!string.IsNullOrWhiteSpace(displayMember))
{
resp.DisplayMember = displayMember;
}

if (!string.IsNullOrWhiteSpace(valueMember))
{
resp.ValueMember = valueMember;
}

resp.DataSource = items;

if (onlyShowDisplayColumnInDropDownWindow)
{
resp.PopulateColumns();
foreach (LookUpColumnInfo colInfo in resp.Columns)
{
if (colInfo.FieldName.Equals(displayMember))
{
colInfo.Visible = true;
}
else
{
colInfo.Visible = false;
}
}
}


foreach (GridColumn col in this.gridView.Columns)
{
if (col.FieldName.Equals(columnName))
{
col.ColumnEdit = resp;
}
}
}

=================================================================================================

private void Frm_Load(object sender, EventArgs e)
{
PrePayUseGrid.CellValueChangedEvent += PrePayUseGrid_CellValueChangedEvent;
PrePayUseGrid.CustomRowCellEditEvent += PrePayUseGrid_CustomRowCellEditEvent;
}

一、测试成功

private void PrePayUseGrid_CustomRowCellEditEvent(object sender, CustomRowCellEditEventArgs e)
{
if (e.Column.FieldName != "RefundType")
return;
DevExpress.XtraGrid.Views.Grid.GridView gv = sender as DevExpress.XtraGrid.Views.Grid.GridView;

DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit repositoryItem = new DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit();
e.RepositoryItem = repositoryItem;
var view = PrePayUseGrid.GetFocusedBindingInfo<PatUsablePrepayView>();
PatUsablePrepay model = view.GetInnerData() as PatUsablePrepay;
repositoryItem.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
repositoryItem.NullText = string.Empty;
repositoryItem.DisplayMember = "Name";
repositoryItem.ValueMember = "KeyFlag";
repositoryItem.DataSource =manager.SetPreRefundType(model);

repositoryItem.PopulateColumns();
foreach (LookUpColumnInfo colInfo in repositoryItem.Columns)
{
if (colInfo.FieldName.Equals("Name"))
{
colInfo.Visible = true;
}
else
{
colInfo.Visible = false;
}
}
//foreach (GridColumn col in gv.Columns)
//{
// if (col.FieldName.Equals("RefundType"))
// {
// col.ColumnEdit = repositoryItem;
// }
//}
//gv.Columns["RefundType"].FieldName = "KeyFlag";

repositoryItem.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
//PrePayUseGrid.gridView.Columns["RefundType"].FieldName = "RefundType";
//从列表中选择项后,绑定一个选值改变事件,以便于把列表中的其他列的值赋与gridView2中需要的列
//repositoryItem.EditValueChanged += (m, n) =>
//{
// var materiaObject = (m as DevExpress.XtraEditors.LookUpEdit).GetSelectedDataRow();
// PrePayUseGrid.gridView.SetFocusedRowCellValue(PrePayUseGrid.gridView.Columns["RefundType"] , materiaObject.GetType().GetProperty("Name").GetValue(materiaObject));
//};
///repositoryItem.EditValueChanged += repositoryItem_EditValueChanged;

//repositoryItem.ParseEditValue += repositoryItem_ParseEditValue;

}

private void PrePayUseGrid_CellValueChangedEvent(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (e.Column == PrePayUseGrid.gridView.Columns["RefundType"])//退费方式
{
List<PatUsablePrepayView> viewList = PrePayUseGrid.GetAllBindingInfoList<PatUsablePrepayView>();
viewList[e.RowHandle].RefundType = e.Value.ToString();
List<PatUsablePrepay> preList = UIManager.ViewInfoModelToBaseInfoModel<PatUsablePrepay, PatUsablePrepayView>(viewList);
billInfo.NewPrepayList = preList;
LoadData(billInfo);
}
}

二、测试通过但是不灵敏

void repositoryItem_EditValueChanged(object sender, EventArgs e)
{
DevExpress.XtraEditors.BaseEdit edit = PrePayUseGrid.gridView.ActiveEditor;
var materiaObject = (sender as DevExpress.XtraEditors.LookUpEdit).GetSelectedDataRow();
if (PrePayUseGrid.gridView.FocusedColumn.FieldName == "RefundType")
{
PrePayUseGrid.gridView.SetFocusedRowCellValue(PrePayUseGrid.gridView.Columns["RefundType"], edit.Text);
}
}
void repositoryItem_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e)
{
if (e.Value != null)
{
e.Value = e.Value.ToString();
}
else
{
e.Value = "";
}
e.Handled = true;
}

免责声明:文章转载自《dev GridControl 代码自定义下拉框》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇图像质量评估 (IQA) 论文笔记: Convolutional Neural Networks for No-Reference Image Quality Assessment【转】虚拟化(二):虚拟化及vmware workstation产品使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

select下拉框的数据回显

需求描述:select框,下拉后又很多的选项,选择一个,根绝后台代码做查询,完成之后,页面上的select框还是之前选的那个值 解决思路:select本质就是 value和text一一对应,根据你的select下拉菜单,可以在代码中看看value具体是什么,text是什么,比如说value是对应的id而text是对应的name,然后后台根绝选择的内容查询的...

RobotFramework框架做自动化的过程中,遇到不能选择下拉框问题

1.描述 使用RobotFramework框架做自动化的过程中,遇到不能选择下拉框问题。 2.遇到的问题 关于下拉框的使用,网上都是这么使用的 select From List By Value Xpath=//* [@] vlaue # select From List By Value 关键字用于选择下拉框。 Xpath=//* [@] 定位下拉框;...

phpcms常用接口调用方法

常用函数 , 打开include/global.func.php,下面存放一些公共函数 view plaincopy to clipboardprint?function str_charset($in_charset, $out_charset, $str_or_arr) //转换字符串或者数组的编码function set_cookie($var, $...

在ALV界面添加下拉框

1.在alv界面表单属性中设置 ifwa_fieldcat-fieldname='YC_MARK'.wa_fieldcat-edit='X'.wa_fieldcat-drdn_field='DD_HANDLE'.wa_fieldcat-drdn_hndl='1'.endif. 2.给下拉框赋值 LTH_LIST-HANDLE='1'.LTH_LIST-VA...

Jquery取值方法汇总

一、下拉框 1、jquery获取当前选中select的text值 var a = $("#ShareMoneyType").find("option:selected").text(); 2、jquery获取下拉框选中的Value值 var v = $("#ShareMoneyType").val(); 3、jquery获取当前选中select的索引值...

jquery对下拉框的操作

<script type="text/javascript"></script> jQuery对下拉框的操作 /获取第一个option的值 $('#test option:first').val(); //最后一个option的值 $('#test option:last').val(); //获取第二个option的值 $('#t...