XtraReport中使用Checkbox控件来代替radioButton的单选和复选功能
2020-10-30 20:47 默默的码农哥 阅读(241) 评论(0) 编辑 收藏 举报 private void PrintingSystem_EditingFieldChanged(object sender, DevExpress.XtraPrinting.EditingFieldEventArgs e)
{
var brick = e.EditingField.Brick;
if (brick.BrickOwner is XRLabel)
{
((XRLabel)brick.BrickOwner).Text = brick.Text;
}
else if (brick.BrickOwner is XRCheckBox)
{
var chk = (XRCheckBox)brick.BrickOwner;
var name = chk.Tag?.ToString();
if (!string.IsNullOrEmpty(name))
{
var ctl = ReportHeader.Controls.Cast<XRControl>().FirstOrDefault(c => c.Name == name);
if (!string.IsNullOrEmpty(chk.EditOptions.GroupID))
{
//单选
ctl.Tag = brick.Text;
}
else
{
//多选
var arr = string.IsNullOrEmpty(ctl.Tag?.ToString()) ? new List<string>() : ctl.Tag?.ToString().Split('&').ToList();
if (!string.IsNullOrEmpty(chk.Text))
{
{
var brick = e.EditingField.Brick;
if (brick.BrickOwner is XRLabel)
{
((XRLabel)brick.BrickOwner).Text = brick.Text;
}
else if (brick.BrickOwner is XRCheckBox)
{
var chk = (XRCheckBox)brick.BrickOwner;
var name = chk.Tag?.ToString();
if (!string.IsNullOrEmpty(name))
{
var ctl = ReportHeader.Controls.Cast<XRControl>().FirstOrDefault(c => c.Name == name);
if (!string.IsNullOrEmpty(chk.EditOptions.GroupID))
{
//单选
ctl.Tag = brick.Text;
}
else
{
//多选
var arr = string.IsNullOrEmpty(ctl.Tag?.ToString()) ? new List<string>() : ctl.Tag?.ToString().Split('&').ToList();
if (!string.IsNullOrEmpty(chk.Text))
{
if (false == arr.Exists(i => i.Equals(chk.Text, System.StringComparison.OrdinalIgnoreCase)))
{
//集合没有,并勾选了
if (e.EditingField.EditValue.ToString() == "Checked")
arr.Add(chk.Text);
}
else
{
if (e.EditingField.EditValue.ToString() == "Unchecked")
{
arr.Remove(chk.Text);
}
}
}
ctl.Tag = string.Join("&", arr);
}
}
}
}
{
//集合没有,并勾选了
if (e.EditingField.EditValue.ToString() == "Checked")
arr.Add(chk.Text);
}
else
{
if (e.EditingField.EditValue.ToString() == "Unchecked")
{
arr.Remove(chk.Text);
}
}
}
ctl.Tag = string.Join("&", arr);
}
}
}
}
radiobutton用checkbox来代替
对于多个checkbox只要选一个的情况,设置每个checkbox的tag值为同一个控件,并且设置checkbox的EditOpitions.GroupID不为空。
多于多个checkbox需要选多个的情况,设置每个checkbox的tag值为同一个控件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架