我更改BindingSource的数据源时得到的错误
"数据绑定找不到适合所有绑定行的行,适合所有绑定"
this.RemoveAllBindings(); // My work-around for the meantime
bdsOrder.DataSource = _ds.Tables["orders"]; // errors here on second time around(first time is blank datatable, second time is when i open existing record, then it errors), dataset comes from Remoting
bdsOrderDetail.DataSource = _ds.Tables["order_detail"];
bdsPhoto.DataSource = _ds.Tables["order_photo"];
bdnPhoto.BindingSource = bdsPhoto;
Run Code Online (Sandbox Code Playgroud)
我的Helper扩展方法解决了困扰"数据绑定无法找到行......"的错误.
namespace MycComponentExtension
{
public static class Helper
{
public static void RemoveAllBindings(this Form form)
{
RemoveAllBindings((Control)form);
}
private static void RemoveAllBindings(this Control root)
{
foreach (Control c in root.Controls)
{
if (c.Controls.Count …Run Code Online (Sandbox Code Playgroud) 我使用BindingSource.Filter只列出数据源的某些元素.特别是我这样使用它很多:
m_bindingSourceTAnimation.Filter = "Name LIKE '" + FilterText + "'";
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如果以某种方式可以使用带有这些过滤器的正则表达式.
我特别需要多个通配符(*)字符
*hello*world*
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试使用System.Windows.Forms.PropertyGrid.
要使该属性在此网格中不可见,应使用BrowsableAttributeset to false.但添加此属性会使属性无法绑定.
例如:创建一个新的Windows窗体项目,拖放TextBox和PropertyGrid到Form1.使用下面的代码,宽度TextBox不会被绑定到Data.Width:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Data data = new Data();
data.Text = "qwe";
data.Width = 500;
BindingSource bindingSource = new BindingSource();
bindingSource.Add(data);
textBox1.DataBindings.Add("Text", bindingSource, "Text", true,
DataSourceUpdateMode.OnPropertyChanged);
textBox1.DataBindings.Add("Width", bindingSource, "Width", true,
DataSourceUpdateMode.OnPropertyChanged);
propertyGrid1.SelectedObject = data;
}
}
Run Code Online (Sandbox Code Playgroud)
数据类的代码是:
public class Data : IBindableComponent
{
public event EventHandler TextChanged;
private string _Text;
[Browsable(true)]
public …Run Code Online (Sandbox Code Playgroud) 我正在使用这样的BindingNavigator让用户浏览BindingSource的数据记录.如何通过程序将显示的页面更改为所需的页码?
我已经将PositionItem设置为所需的页码,但这只会更改显示的页码并且不会移动到此页面.
我确定这并不困难,但我现在正在寻找解决方案一个小时.所以我现在问你们...
我想过滤我的DataGridView数据.我的DataGridView的DataSource绑定到了BindingSource.BindingSource包含我clsBillHeader班级中的对象列表.
这是第一段代码:
Dim bSource As New BindingSource
bSource.DataSource = clsBillHeader.GetAll()
dgvBills.DataSource = bSource
bSource.Filter = "JobNumber Like '100%'" //Filter doesn't actually work
Run Code Online (Sandbox Code Playgroud)
得到所有()
Public Shared Function GetAll() As List(Of clsBillHeader)
Dim mycn As New SqlConnection(connection)
Dim mycmd As New SqlCommand("SELECT * FROM Headers", mycn)
mycn.Open()
Dim myreader As SqlDataReader = mycmd.ExecuteReader
Dim myList As New List(Of clsBillHeader)
While myreader.Read
Dim item As New clsBillHeader()
SetByReader(myreader, item) //Sets all values correctly (such as forein keys)
myList.Add(item)
End …Run Code Online (Sandbox Code Playgroud) 我有问题的更新DataSource的DataGridView在WindowsForms应用程序.
我已经DataGridView填充了List我自己班级的数据Skoleni.
private List<Skoleni> setrideneSkoleni; //list of objects
Run Code Online (Sandbox Code Playgroud)
在MainForm()方法中,我调用以下内容:
bindingDwgSkoleni = new BindingSource(); //create bindingsource
bindingDwgSkoleni.DataSource = setrideneSkoleni; //set datasource for bindingsource
dgwSkoleni.DataSource = bindingDwgSkoleni; // set datasource for datagridview
Run Code Online (Sandbox Code Playgroud)
哪个DataSource适用于BindingSource和DataGridView.
然后我以setrideneSkoleni另外的形式添加项目,button_Click方法包含:
setrideneSkoleni.Update(); // updates setrideneSkoleni
bindingDwgSkoleni.ResetBindings(false); //should update bindingSource, but DOES NOT
Run Code Online (Sandbox Code Playgroud)
变量setrideneSkoleni已更新(项目已添加),但BindingSource未更新(在调试中检查 - 列表仍包含相同的项目).
我不能简单地将DataGridView的DataSource设置为null而不是新列表,因为它会破坏格式化(隐藏列变得可见,排序被取消),我必须使用BindingSource来保持配置.
任何人都可以建议我如何解决这个问题?
谢谢
我有一个简单的DTO类,我将其设置为窗体上绑定源的数据源.
表单包含具有Value属性的自定义控件.这是属性:
[Browsable(false)]
[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
public virtual T Value
{
get { return this.value; }
set { this.value = value; }
}
Run Code Online (Sandbox Code Playgroud)
当控件绑定到bindingsource时,setter被调用6次.当控件未绑定时,setter仅被调用2次
在这两种情况下,第一次调用是因为设计器代码有一行:
mycontrol.Value = null;
Run Code Online (Sandbox Code Playgroud)
最后一次调用是因为我设置了一个值.所以第一次和最后一次通话都是正常的.但是当绑定控件时,为什么setter被称为额外4次?
我试图弄清楚数据绑定BindingSource应该如何工作我希望DataGridView用一个List<>更新列表的内容填充.
List当我检查调试器时,我可以看到增长并验证它是否被填充.我认为BindingSource当List改变时会发生一个事件.但没有一个是可用的.如何更改基础列表时收到通知?
我按照说明操作,并提供以下测试代码:
Data d;
BindingSource bs;
public Form1()
{
InitializeComponent();
bs = new BindingSource();
d = new Data();
}
private void Form1_Load(object sender, EventArgs e)
{
bs.DataSourceChanged += new EventHandler(bs_DataSourceChanged);
bs.ListChanged += new ListChangedEventHandler(bs_ListChanged);
bs.DataMemberChanged += new EventHandler(bs_DataMemberChanged);
bs.CurrentChanged += new EventHandler(bs_CurrentChanged);
bs.CurrentItemChanged += new EventHandler(bs_CurrentItemChanged);
bs.DataSource = d.list;
dataGridView1.DataSource = bs;
}
// ... all the handling methods caught with a break point in VS.
private void …Run Code Online (Sandbox Code Playgroud) 我BindingSource有一个BindingList<Foo>附加的数据源.我想用合作BindingSource的Find方法来查找的元素.但是,NotSupportedException当我执行以下操作时会抛出a ,即使我的数据源确实实现了IBindingList(并且MSDN中没有记录此类异常):
int pos = bindingSource1.Find("Bar", 5);
Run Code Online (Sandbox Code Playgroud)
我在下面附上了一个简短的例子(a ListBox,a Button和a BindingSource).有人可以帮我Find调用吗?
public partial class Form1 : Form
{
public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e)
{
var src = new BindingList<Foo>();
for(int i = 0; i < 10; i++)
{
src.Add(new Foo(i));
}
bindingSource1.DataSource = src;
}
private void button1_Click(object sender, EventArgs e)
{
int pos = bindingSource1.Find("Bar", …Run Code Online (Sandbox Code Playgroud) 我试图通过两种方法绑定数据集“data_set”中数据表“申请人详细信息”中“申请人图像”列中的图像。但是当我运行表单应用程序时,我看不到图片框“imgusr”中显示的图像。我的绑定源名称是“bindSource”。
假设 data_set 正确检索了所有内容,图像未加载到图片框“imgusr”中可能有什么问题??
此外,sizeMode 的图片框属性为“缩放”。
private void Update_Load(object sender, EventArgs e){
data_set = blobj.srcforVU();
bindSource.DataSource = data_set;
bindSource.DataMember = "Applicant's Details";
lbidvalue.DataBindings.Add(new Binding("Text", bindSource, "Applicant's ID", false));
//method 1
//Binding binding = new Binding("Image", bindSource, "Applicant's Image", true, DataSourceUpdateMode.OnPropertyChanged);
//binding.Format += new ConvertEventHandler(binding_Format);
//imgusr.DataBindings.Add(binding);
//method 2
imgusr.DataBindings.Add(new Binding("Image", bindSource, "Applicant's Image", true));
tbfname.DataBindings.Add(new Binding("Text", bindSource, "First Name", true));
tblname.DataBindings.Add(new Binding("Text", bindSource, "Last Name", true));
tbgender.DataBindings.Add(new Binding("Text", bindSource, "Gender", true));
tbbdate.DataBindings.Add(new Binding("Text", bindSource, "Birth Date", true));
tbmob.DataBindings.Add(new Binding("Text", bindSource, "Mobile …Run Code Online (Sandbox Code Playgroud) bindingsource ×10
c# ×10
data-binding ×7
winforms ×7
.net ×6
bindinglist ×1
datagridview ×1
datasource ×1
regex ×1
vb.net ×1