110,536
社区成员
发帖
与我相关
我的任务
分享
public static DataGridView InitDgvJobFace(ref DataGridView dgv)
{
DataGridView DgvJob = dgv;
//【BranJob】列初始化
DataGridViewCheckBoxColumn multiselect = CreateCheckColumn("multiselect", "选择");
DataGridViewTextBoxColumn id = CreaTextBoxColumn("id", "内码标识", "BranjobId", false);
DataGridViewComboBoxColumn jobna = CreateComboBoxColumn("jobna", "职位名称", "Jobno");
SetAlternateChoicesUsingItems(jobna);
DataGridViewTextBoxColumn planqty = CreaTextBoxColumn("planqty", "定编人数", "Planqty");
DataGridViewTextBoxColumn jobqty = CreaTextBoxColumn("jobqty", "实际人数", "Jobqty");
DataGridViewTextBoxColumn lackqty = CreaTextBoxColumn("lackqty", "欠缺人数", "Lackqty");
DataGridViewTextBoxColumn overtime = CreaTextBoxColumn("overtime", "固定加班小时", "Overtime");
overtime.DefaultCellStyle = CellStyle(CellStyleState.decimalCellStyle);
//添加到DataGridView对象
DgvJob.Columns.AddRange(new DataGridViewColumn[]
{
id,
jobna,
planqty,
jobqty,
lackqty,
overtime
});
//插入多选[列]
DgvJob.Columns.Insert(0, multiselect);
InitDgv(DgvJob);
return DgvJob;
}
public class ContextHelper
{
public static DataTable GetBranjob(string branno)
{
try
{
using(CusProContext db = new CusProContext())
{
var BranjobObj = (from p in db.BranJob
where p.Branno == branno
join a in db.JobSet on p.Jobno equals a.Jobno
select new
{
p.BranjobId,
p.Jobno,
a.Jobna,
p.Planqty,
p.Overtime
}
into x
group x by new
{
x.BranjobId,
x.Jobno,
x.Jobna,
x.Planqty,
x.Overtime
}
into y
select new
{
y.Key.BranjobId,
y.Key.Jobno, //职位编号
y.Key.Jobna, //职位名称
y.Key.Planqty, //定编人数
Jobqty = y.Count(), //实际人数
Lackqty = y.Key.Planqty - y.Count(), //欠缺人数
Overtime = y.Sum(s => s.Overtime) //固定加班小时
}).ToList();
return LinqToDataTable(BranjobObj);
}
}
catch(Exception ex)
{
throw ex;
}
}
}
//下面是窗体dgv控件加载:
private void InitDgvData(DataGridView dgv)
{
dgv.DataSource = ContextHelper.GetBranjob(BranObj.Branno);
}
private void Treelst_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
//……(省略)
//部门职务信息
InitDgvData(DgvJob);
}
//新行默认值
private void DgvJob_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
e.Row.Cells["multiselect"].Value = e.Row.IsNewRow;
//e.Row.Cells["jobna"].Value = "";
//可编辑
e.Row.Cells["jobna"].ReadOnly = false;
e.Row.Cells["planqty"].ReadOnly = false;
e.Row.Cells["overtime"].ReadOnly = false;
//可编辑位置背景色
e.Row.Cells["jobna"].Style.BackColor = Color.LightYellow;
e.Row.Cells["planqty"].Style.BackColor = Color.LightYellow;
e.Row.Cells["overtime"].Style.BackColor = Color.LightYellow;
}
//单元格编辑模式终止事件
private void DgvJob_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//按ESC键可清除行错误消息。
DgvJob.Rows[e.RowIndex].ErrorText = null;
//编辑后计算列逻辑:
try
{
if (DgvJob.Rows.Count > 1)
{
//职位编号
string rowJobna = DgvJob.Rows[e.RowIndex].Cells["jobna"].Value.ToString() ?? "";
//定编人数
int rowPlanqty = DgvJob.Rows[e.RowIndex].Cells["planqty"].Value != DBNull.Value ? (int)DgvJob.Rows[e.RowIndex].Cells["planqty"].Value : 0;
//实际人数
DgvJob.Rows[e.RowIndex].Cells["jobqty"].Value = ContextHelper.FunBranJobqty(BranObj.Branno, rowJobna);
int rowJobqty = (int)DgvJob.Rows[e.RowIndex].Cells["jobqty"].Value;
//欠缺人数
DgvJob.Rows[e.RowIndex].Cells["lackqty"].Value = rowPlanqty - rowJobqty;
//MessageDxUtil.ShowTips("单元格选中值:" + rowJobqty);
}
}
catch (Exception ex)
{
MessageDxUtil.ShowTips(ex.Message);
}
}
private void BarBtnAddUser_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ActState = ActionState.DetailAdd;
//判断TabControl.Page页面焦点位置
if (TabCtl.SelectedTab == TabCtl.TabPages[0])
{
//DgvJob
//新增空白行
DgvJob.AllowUserToAddRows = true;
}
}
public static DataGridView InitDgvJobFace(ref DataGridView dgv)
{
DataGridView DgvJob = dgv;
DataGridViewCheckBoxColumn multiselect = CreateCheckColumn("multiselect", "选择");
DataGridViewComboBoxColumn jobna = CreateComboBoxColumn("jobna", "职位名称", "Jobno");
//添加到DataGridView对象
DgvJob.Columns.AddRange(new DataGridViewColumn[]
{
id,
jobna,
//……省略
});
//插入多选[列]
DgvJob.Columns.Insert(0, multiselect);
InitDgv(DgvJob);
return DgvJob;
}