[英]Formatting a data bound control according to bound data
我正在使用以下方法在中继器中放置一些数据-
BindingSource bindingSource5 = new BindingSource();
bindingSource5.DataSource = BookingManager.GetBookingDaysForDayWithBookingFields(DateTime.Now.AddDays(+4));
lbSchoolFri.DataBindings.Add("Text", bindingSource5, "SchoolName");
lbTeacherFri.DataBindings.Add("Text", bindingSource5, "FullName");
lbDurationFri.DataBindings.Add("Text", bindingSource5, "BookingDayDuration");
lbYear.DataBindings.Add("Text", bindingSource5, "Year");
cbSchoolFri.DataBindings.Add("Checked", bindingSource5, "SchoolContacted");
cbTeacherFri.DataBindings.Add("Checked", bindingSource5, "TeacherContacted");
cbEmailFri.DataBindings.Add("Checked", bindingSource5, "LetterSent");
dataRepeater5.DataSource = bindingSource5;
如果选中了cbSchoolFriday,我想将Picture Box pbFriday的背景色更改为红色。 我怎样才能做到这一点?
屏幕截图-
谢谢
如果要在不使用CheckedChanged
事件的情况下使用DataBindings
,请使用以下解决方案:
Binding bind = new Binding("Checked", bindingSource5, "SchoolContacted");
bind.Format += (s,e) => {
e.Value = (int)e.Value == 1;
dataRepeater.ItemTemplate.BackColor = ((bool)e.Value) ? Color.Red : Color.White;
};
cbSchoolFri.DataBindings.Add(bind);
我不确定您的dataRepeater.ItemTemplate
是否具有DataBindings
属性,以便我们可以使用dataRepeater.ItemTemplate.DataBindings
吗?
我设法解决了这个问题。 看来dataRepeater具有DrawItem事件。 在这里,我输入以下代码-
private void dataRepeater1_DrawItem(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
CheckBox cbSchoolMon = e.DataRepeaterItem.Controls["cbSchoolMon"] as CheckBox;
Label lbTeacherIDMon = e.DataRepeaterItem.Controls["lbTeacherIDMon"] as Label;
PictureBox pbMon = e.DataRepeaterItem.Controls["pbMon"] as PictureBox;
if (cbSchool.Checked)
{
pbMon.BackColor = Color.Red;
}
else
{
pbMon.BackColor = Color.Yellow;
}
}
谢谢你的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.