常用列表插件

1.常用事件

获取选中行单据 this.ListView.SelectedRowsInfo

在这基础上获取单据fid:GetPrimaryKeyValues();(返回值为数组)

在这基础上获取单据体的id集合:GetEntryPrimaryKeyValues();(返回值为数组)

获取选中行的其他基本信息 this.ListModel.GetData 返回值为DynamicObjectCollection

//继承.列表插件

public class ClassName:AbstractListPlugIn

{

//定义字段

string info;

public override void BarItemClick(BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e)

{

base.BarItemClick(e);

if(e.BarItemKey.Equals("YDIE_tbTest"))

{

//选择的行,获取所有信息,放在listcoll里面

ListSelectedRowCollection listcoll= this.ListView.SelectedRowsInfo;

#region 获取单据头FID内码

// //获取所选行的主键,赋值给一个数组listKey

// //接收返回的数组值

//string[] listKey = listcoll.GetPrimaryKeyValues();

////定义字段

//info = "";

// //显示出来,获取的主键

// //for循环

// foreach(string key in listKey)

// {

// //给info赋值,读取出来

// info = info + "," + key;

// }

// this.View.ShowMessage(info);

#endregion

#region//获取单据体分录FID

// //定义一个字符串数组,接收分录FID的值

//string[] listKey = listcoll.GetEntryPrimaryKeyValues();

// //和上一节,一样循环,显示

// foreach(string key in listKey)

// {

// info = info + "," + key;

// }

#endregion// this.View.ShowMessage(info);

//获取行选择信息

this.ListModel.GetData(listcoll);

//定义字段,赋值

DynamicObjectCollection dycoll = this.ListModel.GetData(listcoll);

//通过循环,读取数据

for(int i =0;i<dycoll.Count;i++)

{

info = info + "," + dycoll[i]["FBillNo"];

info = info + "," + dycoll[i]["FDate"];

}

//显示

this.View.ShowMessage(info);

}

}

}

修改列表样式,如颜色等

定义一个FormatCondition fc = new FormatCondition();

开启触发 fc.ApplayRow = true;

设置样式 fc.BackColor = ColorTranslator.ToHtml(System.Drawing.Color.FromArgb(255, 255, 187));

添加到事件中:args.FormatConditions.Add(fc);

2.批量修改

思路:通过添加一个按钮打开二开的动态表单,将要修改的字段和值输入动态表单,回传后在后台将值更新到选中的单据。

尝试一个简单的批量修改(固定修改一个字段):首先在单据上添加一个字段

截图.png

截图.png

新建动态表单,增加列表上对应的字段,再增加一个用来存储id的字段,方便确定要修改的单据

截图.png

截图.png

在动态表单上添加触发批量修改的按钮和取消修改的按钮

截图.png

截图.png

列表增加一个打开动态表单的按钮

截图.png

截图.png

编辑列表插件,点击批改按钮时触发,并将选中行的单据id传到打开的单据上,如果没有选中则提示

public class BatchUpdateListPlugin : AbstractListPlugIn

{

//点击按钮触发

public override void BarItemClick(BarItemClickEventArgs e)

{

base.BarItemClick(e);

if (e.BarItemKey.Equals("YNPX_tbBatchUpdate"))

{

//获取选择记录

ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;

//读取ID,放到数组

string[] ID = selectRows.GetPrimaryKeyValues();

string FID = "";

//没有选择行提示

if (ID.Length == 0)

{

//如果选择的是0,即没有选择行记录,弹窗报错,返回

this.View.ShowMessage("请选择单据!", MessageBoxType.Notice);

return;

}

else

{

//如果点击成功,循环ID

for (int i = 0; i < ID.Length; i++)

{

FID = FID + ID[i].ToString() + ",";

}

DynamicFormShowParameter formParameter = new DynamicFormShowParameter();

formParameter.FormId = "YNPX_CSPGB";

//FID通过字符串传递过去

formParameter.CustomParams.Add("FID", FID.Substring(0, FID.Length - 1));

this.View.ShowForm(formParameter);

}

}

}

}

编辑动态表单插件,用来接收传过来的值,与更新单据

public class UpdateDataFace : AbstractDynamicFormPlugIn

{

//定义字段

object FID;

object FType;

string sql;

DataSet ds = new DataSet();

DataTable dt = new DataTable();

//销售出库单加载时参数FID传进来

public override void OnLoad(EventArgs e)

{

base.OnLoad(e);

//接收FID的值

FID = this.View.OpenParameter.GetCustomParameter("FID");

//把FID加到上一节添加的字段上面

this.View.Model.SetValue("FID", FID.ToString());

}

//加载后,点击批改按钮,更新值

public override void BarItemClick(BarItemClickEventArgs e)

{

base.BarItemClick(e);

IOperationResult opResult = new OperationResult();

//当点击批改按钮

if (e.BarItemKey == "YNPX_tbBatchUpdate")

{

//定义数组

string[] strFID;

//通过逗号分隔拆分数组

strFID = this.View.Model.GetValue("FID").ToString().Trim().Split(',');

for (int i = 0; i < strFID.Length; i++)

{

//更新销售出库单,单据头表T_SAL_OUTSTOCK,物料属性F_YDIE_WLSX字段

//获取物料属性批量修改里面的 F_YDIE_WLSX值

//返回

sql = "/*dialect*/update T_SAL_OUTSTOCK set F_YNPX_CSPG = '" + this.Model.DataObject["F_YNPX_CSPG"].ToString() + "' where FID=" + strFID[i] +

";select FBILLNO from T_SAL_OUTSTOCK where FID=" + strFID[i];

//执行sql

ds = DBUtils.ExecuteDataSet(this.Context, sql);

dt = ds.Tables[0];

if (dt.Rows.Count > 0)

{

opResult.OperateResult.Add(new OperateResult()

{

Name = "更新" + dt.Rows[0]["FBILLNO"].ToString(),

Message = "更新成功!",

MessageType = MessageType.Normal,

SuccessStatus = true

});

}

//仿物料列表,弹窗

this.View.ShowOperateResult(opResult.OperateResult);

}

}

}

}

3.导入导出

导出

posted @ 2024-01-25 17:47  lcyyds  阅读(63)  评论(0)    收藏  举报