radiobutton 3个以上按钮,多值如何绑定 那是ASP.NET,这个是WinForm。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 3个radiobutton是动态生成的吧,那就动态绑定其属性就完了啊 解决了,Case when text2='Y' then 'True' else 'False' end radiobutton1, Case when text2='N' then 'True' else 'False' end radiobutton2,Case when text2='0' then 'True' else 'False' end radiobutton3,一列值 用 case when 去判断获取3种结果 分别绑定给 radiobutton。但是,接下来又有一个问题了。radioButton1.DataBindings.Clear(); radioButton1.DataBindings.Add("Checked", bindingSource1, "radioButton1"); 我在WinForm 填充bindingSource1,再绑定给radiobutton.在业务逻辑事件: 创建新数据时,调用 this.bindingSource1.AddNew() 方法去添加新数据,却发现 异常。 未处理 System.InvalidOperationException Message=添加到 BindingSource 的列表中的所有对象必须是同一类型。 这个错误是我添加下面这事件爆出来的 private void bindingSource1_AddingNew(object sender, AddingNewEventArgs e) { e.NewObject = new Object(); } 这个事件本来是可以省略的,原因是 在绑定数据,需要增加新行的时候,正常用AddNew() 方法,会清空掉控件里的数据,并且 bindingSource1.Count.ToString() 会 + 1,但是 绑定了radiobutton后,控件里的数据并不会清空,我这才发现 AddNew() 有异常了,于是 主动用 AddingNew 去报错。 这个有无好的解决办法啊! 目前的解决办法是: 在 this.bindingSource1.AddNew() 之前强行赋值, radiobutton.Checked = true; 但是 没能搞懂这里面的原理,实在是心有不甘。 查了资料,搞定了。radioButton1.DataBindings.Clear(); radioButton1.DataBindings.Add("Checked", bindingSource1, "radioButton1",true);后面 加true1)formattingEnabled(属性FormattingEnabled) true,Binding对象自动在数据源类型和控件要求的类型间进行转换 false,反之 根据你的图片,你的 radio button 的外层是什么?是 groupbox 吗?如果是 groupbox 或者其他容器,可以用这种方法赋值:private void SetRadioGroupsValue(IEnumerable<Control> containers, IEnumerable<string> values){ for (int i = 0; i < containers.Count(); i++) { SetRadioGroupValue(containers.ElementAt(i), values.ElementAt(i)); }}private void SetRadioGroupValue(Control container, string value){ var radios = container.Controls.Cast<RadioButton>().Where(rb => rb.Tag.ToString() == value); if (radios.Count() > 0) { radios.First().Select(); }}// 注意:你必须事先把每一个 radio 的 Tag 值设置好,比如:合格 1,不良 2,未检测 3// 那么调用就可以这样,我只是举个例子:SetRadioGroupsValue(Controls.OfType<GroupBox>(), new[] { 1, 2, 3, 1, 2, 3, 1, 3 }.Select(i => i.ToString())); 有一点需要注意的是,你循环遍历获得的 groupbox 的顺序和你 Form 上添加 groupbox 的顺序是相反的! app.config 只能读不能写? 为什么MS不提供方法? xml写入同名节点的问题 倒计时问题? 如何理解反序列化的几个参数? Calendar控件问题 reporting service身份验证的问题? 谁有ACCESS全文搜索控件? IntPtr究竟是什么呀? 急~请问C#怎样在DataGrid的行标头上显示ID序号 请问如何在c#中调用winapi? 如何调用其它语言编的dll? C#基础知识 请问Webservice都有哪些协议 他们之间都有什么区别?
Case when text2='Y' then 'True' else 'False' end radiobutton1, Case when text2='N' then 'True' else 'False' end radiobutton2,Case when text2='0' then 'True' else 'False' end radiobutton3,
一列值 用 case when 去判断获取3种结果 分别绑定给 radiobutton。但是,接下来又有一个问题了。radioButton1.DataBindings.Clear();
radioButton1.DataBindings.Add("Checked", bindingSource1, "radioButton1");
我在WinForm 填充bindingSource1,再绑定给radiobutton.
在业务逻辑事件:
创建新数据时,调用 this.bindingSource1.AddNew() 方法去添加新数据,却发现 异常。 未处理 System.InvalidOperationException
Message=添加到 BindingSource 的列表中的所有对象必须是同一类型。 这个错误是我添加下面这事件爆出来的
private void bindingSource1_AddingNew(object sender, AddingNewEventArgs e)
{
e.NewObject = new Object();
} 这个事件本来是可以省略的,原因是 在绑定数据,需要增加新行的时候,正常用AddNew() 方法,会清空掉控件里的数据,并且 bindingSource1.Count.ToString() 会 + 1,但是 绑定了radiobutton后,控件里的数据并不会清空,我这才发现 AddNew() 有异常了,于是 主动用 AddingNew 去报错。
这个有无好的解决办法啊!
在 this.bindingSource1.AddNew() 之前强行赋值, radiobutton.Checked = true; 但是 没能搞懂这里面的原理,实在是心有不甘。
radioButton1.DataBindings.Clear();
radioButton1.DataBindings.Add("Checked", bindingSource1, "radioButton1",true);
后面 加true
1)formattingEnabled(属性FormattingEnabled)
true,Binding对象自动在数据源类型和控件要求的类型间进行转换
false,反之
{
for (int i = 0; i < containers.Count(); i++)
{
SetRadioGroupValue(containers.ElementAt(i), values.ElementAt(i));
}
}
private void SetRadioGroupValue(Control container, string value)
{
var radios = container.Controls.Cast<RadioButton>().Where(rb => rb.Tag.ToString() == value);
if (radios.Count() > 0)
{
radios.First().Select();
}
}
// 注意:你必须事先把每一个 radio 的 Tag 值设置好,比如:合格 1,不良 2,未检测 3
// 那么调用就可以这样,我只是举个例子:
SetRadioGroupsValue(Controls.OfType<GroupBox>(), new[] { 1, 2, 3, 1, 2, 3, 1, 3 }.Select(i => i.ToString()));