标签: bindingsource

使用bindingsource将正确位置的新行添加到用户已排序的wingrid

我有一个使用bindingSource的Infragistics UltraGrid.

如果我在绑定列表中添加一个新对象,它会在网格底部添加一行,如果没有用户定义的排序则可以.

问题是,如果用户单击列标题对网格进行排序,是否有办法让新行以正确的排序顺序显示而不是始终位于底部?

重新排序每个插入的所有行太昂贵.

sorting infragistics ultrawingrid bindingsource

3
推荐指数
1
解决办法
6129
查看次数

BindingSource刷新

我有2个类ie CustomerOrder,Customer类有一个订单集合的引用.我使用主细节BindingSources.

我的问题是当我使用延迟加载模式的订单时,我的细节BindingSource没有更新.

UI

BindingSource1.datasource = GetCustomers();
BindingSource2.DataMember = "Orders";
BindingSource2.datasource = BindingsSource1;
Run Code Online (Sandbox Code Playgroud)

所以在我的datagridView1Click事件中

if (customer.orders != null)
{
  customer.Orders = LoadOrders();
}
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助.

.net c# business-objects bindingsource winforms

3
推荐指数
1
解决办法
2万
查看次数

C#:数据将单个自定义类绑定到表单控件(复选框?)

我正在Visual Studio 2008 / C#中编写桌面应用程序

我完成了(主要是)编写了一个引擎,该引擎为一家小公司生成了一周的工作计划。课程安排问题的一种形式

现在,我正在设计一种表单,用户可以在其中确定引擎要遵循的初始参数或标准(因为某些设置是可选的)

我有一个名为EngineParameters的类,其中包含所有这些设置。

出于数据绑定的目的,我创建了一个bndEngineParameters类,该类使用getter和setter封装了所有相关字段。

public class bndEngineParameters
    {
        private engineParameters _parameters;

        public bndEngineParameters(engineParameters ep)
        {
            this._parameters = ep;                
        }

        public bool avoidGrouping
        {
            get { return _parameters.avoidGrouping; }
            set { _parameters.avoidGrouping = value; }
        }

        public bool avoidWeekends
        {
            get { return _parameters.avoidWeekends; }
            set { _parameters.avoidWeekends = value; }

        }

        public bool keyFlow
        {
            get { return _parameters.keyFlow; }
            set { _parameters.keyFlow = value; }
        }

        public bool keyFlowAssistants
        {
            get { …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding checkbox bindingsource

3
推荐指数
1
解决办法
6764
查看次数

将过滤器应用于BindingSource,但它不起作用

我有一个TextBox,我在其中放了一个短语,它可以是任务的描述,也可以是任务的id.我想使用此TextBox中的文本过滤列表.但是当我将文本放入此TextBox时,过滤不起作用,并且DataGridView中的集合不会更改.

有什么不对?

public void BindData()
{
    var emptyBindingSource = new BindingSource();
    dataGridViewTaskList.AutoGenerateColumns = false;
    dataGridViewTaskList.DataSource = emptyBindingSource;

    var taskList = GetTasks();

    _bindingSource = new BindingSource();
    _bindingSource.DataSource=taskList.Response;

    dataGridViewTaskList.AutoGenerateColumns = false;

    dataGridViewTaskList.DataSource = _bindingSource.DataSource;

    if (dataGridViewTaskList.Columns["gridViewColumnId"] == null)
        dataGridViewTaskList.Columns.Add(new DataGridViewColumn() {Name = "gridViewColumnId"});
    else
        dataGridViewTaskList.Columns["gridViewColumnId"].DataPropertyName = "Id";

    if (dataGridViewTaskList.Columns["gridViewColumnDescription"] == null)
        dataGridViewTaskList.Columns.Add(new DataGridViewColumn() {Name = "gridViewColumnDescription"});
    else
        dataGridViewTaskList.Columns["gridViewColumnDescription"].DataPropertyName = "Description";
}

private void tbSearchedPhraseOrId_TextChanged(object sender, EventArgs e)
{
    _bindingSource.Filter = string.Format("Id = '{0}'", tbSearchedPhraseOrId.Text);
}
Run Code Online (Sandbox Code Playgroud)

我在BindData方法中添加了以下内容,它也不起作用:

_bindingSource.Filter = string.Format("Id LIKE '%{0}%'", "23"); …
Run Code Online (Sandbox Code Playgroud)

c# bindingsource .net-3.5 winforms

3
推荐指数
1
解决办法
2万
查看次数

如何使用C#将文本框值更新为bindingsource?

考虑以下代码:

txtLastModifyUserID.DataBindings.Add("Text", c_bsDataSetSource, "LastModifyUserID");
txtLastModifyUserID.Text = "1234";
Run Code Online (Sandbox Code Playgroud)

为什么不能更新源?

c# textbox bindingsource winforms

3
推荐指数
1
解决办法
1万
查看次数

在WPF中绑定DataGridTextColumn可见性属性

我有一个ItemsSource绑定到a 的数据网格CollectionViewSource.
在每列中,我指定Path绑定的属性以获取要显示的特定信息.

如果用户想要更多信息,我想要做的是用一个复选框切换一些列.为此,我需要将visibility属性绑定到复选框的值(使用转换器),但我非常确定列的数据上下文是否干扰绑定.

<DataGrid ItemsSource="{Binding Source={StaticResource cvs}}" ....>
    <DataGrid.Columns>
        <DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}"
            Visibility="{Binding IsChecked,
                                 ElementName=IncludeFullHist, 
                                 Converter={StaticResource boolItemsConverter}}"/>   
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

我也需要我的viewmodel中的复选框,所以我将其IsChecked属性绑定到我的ViewModel上的属性

<CheckBox x:Name="IncludeFullHist"  IsChecked="{Binding Path=ManagerFullHist }" />
Run Code Online (Sandbox Code Playgroud)

对于我页面中的其他元素,我已经能够使用以下两种方法中的任何一种来连接可见性绑定,但是当我将它们复制到datagrid时似乎都不起作用:

<TextBlock DockPanel.Dock="Left" Text=" Visible 2 " 
    Visibility="{Binding Path=DataContext.ManagerFullHist,
                         RelativeSource={RelativeSource FindAncestor,
                         AncestorType={x:Type UserControl}},
                         Converter={StaticResource boolItemsConverter}}"/>
<TextBlock DockPanel.Dock="Left" Text=" Visible 3 " 
    Visibility="{Binding Path=ManagerFullHist, 
                         Source={StaticResource mainWinResource},
                         Converter={StaticResource boolItemsConverter}}"/>
Run Code Online (Sandbox Code Playgroud)

关于我可以在datagrid中解决这个问题的方法的任何建议?
如果我省略了任何可能有用的代码,请告诉我.

data-binding wpf xaml bindingsource itemssource

3
推荐指数
1
解决办法
4628
查看次数

绑定源不适用于DataGridView C中包含两个或多个单词的列名

我正在使用BindingSource.Filter来过滤datagridview上的数据.我使用了以下代码:

BindingSource bs = new BindingSource();
bs.DataSource = datagridview1.DataSource;
bs.Filter = "columnName like '%" + textBox1.Text + "%'";
datagridview1.DataSource = bs;
Run Code Online (Sandbox Code Playgroud)

这段代码有效.但是,当我在双字列上过滤数据时,代码不再起作用.我试着把撇号放在这些词上'column name' like '%" + tbFilter.Text + "%',但这没有用.请帮我找到正确的代码来过滤我列上的数据.

c# datagridview bindingsource

2
推荐指数
1
解决办法
637
查看次数

通过单独的任务更新BindingSource中的元素

我有一个班,比如说人,有一个Id和一个名字.该类正确实现了INotifyPropertyChanged

另外:有人要求上课人.

我真正的问题是一个更复杂的课程,我把它简化为一个相当简单的POCO,以确定它不是因为我的班级.

本来:

public class Person
{
    public int Id {get; set;}
    public string Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

对于更新,它需要实现INofityChanged.完整的代码就在这个问题的最后

StackOverflow:如何正确实现INotifyPropertyChanged

  • 我有一个System.Windows.Forms.Form
  • 此表单有一个BindingSource.
  • 绑定源的DataSource属性设置为我的类Person
  • 我有一个绑定到BindingSource的DataGridView
  • 我已经为绑定源添加了几个Person实例
  • 添加的人员被正确显示.
  • 如果我以编程方式更改bindingsource中的Person,则会正确显示更改的值.

到现在为止还挺好.如果在单独的线程中更改Person,则会出现问题.

我经常收到带有消息的InvalidOperationException

BindingSource不能是自己的数据源.不要将DataSource和DataMember属性设置为引用BindingSource的值.

我想这与更新是在一个等待的异步任务中完成的事实有关.我知道在更新用户界面项之前,您应该检查InvokeRequired是否相应地采取行动.

private void OnGuiItemChanged()
{
    if (this.InvokeRequired)
    {
       this.Invoke(new MethodInvoker(() => { OnGuiItemChanged(); }));
    }
    else
    {
        ... // update Gui Item
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,使用绑定源时,更改将在bindingsource内处理.所以我无法检查InvokeRequired

那么如何更新也存储在非UI线程中的绑定源中的项目?

按要求:类Person的实现和我的表单的一些代码

class Person : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private int id = 0;
    private string name = null;
    public int Id …
Run Code Online (Sandbox Code Playgroud)

c# multithreading bindingsource

2
推荐指数
1
解决办法
2693
查看次数

为什么我得到“无法绑定到新的显示成员”。用这个代码?

我有这个代码将字典的值分配给组合框:

private void PopulateComboBoxWithSchedulableWeeks()
{
    int WEEKS_TO_OFFER_COUNT = 13;
    BindingSource bs = new BindingSource();
    Dictionary<String, DateTime> schedulableWeeks = 
GetWeekBeginningsDict(WEEKS_TO_OFFER_COUNT);
    bs.DataSource = schedulableWeeks;
    comboBoxWeekToSchedule.DataSource = bs;
    comboBoxWeekToSchedule.DisplayMember = "Key";
    comboBoxWeekToSchedule.ValueMember = "Value";
}

public static Dictionary<String, DateTime> GetWeekBeginningsDict(int 
    countOfWeeks)
{
    DateTime today = DateTime.Today;
    int daysUntilMonday = ((int)DayOfWeek.Monday - (int)today.DayOfWeek + 7) 
        % 7;
    DateTime nextMonday = today.AddDays(daysUntilMonday);
    Dictionary<String, DateTime> mondays = new Dictionary<String, DateTime>
();
    if (!IsAssemblyOrConventionWeek(nextMonday))
    {
        mondays.Add(nextMonday.ToLongDateString(), nextMonday);
    }

    for (int i = 0; i < countOfWeeks; i++) …
Run Code Online (Sandbox Code Playgroud)

c# combobox dictionary bindingsource

2
推荐指数
1
解决办法
3713
查看次数

如何过滤DataView RowFilter中的整数?

我试图过滤具有多列的数据视图,其中一些是数值.键入字符串时一切都很完美,但一旦输入数值(如检查信使#),它就会过滤掉.

过滤前我的数据如何显示: 在此输入图像描述

过滤后我的数据如何显示: 在此输入图像描述

我的守则如下:

private void tbxSearchCourier_KeyUp(object sender, KeyEventArgs e)
    {
        string outputInfo = "";
        string[] keyWords = tbxSearchCourier.Text.Split(' ');

        foreach (string word in keyWords)
        {
            if (outputInfo.Length == 0)
            {
                outputInfo = "('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
                    + "%' OR 'Email Address' LIKE '%" + word + "%')";
            }
            else
            {
                outputInfo += …
Run Code Online (Sandbox Code Playgroud)

.net c# dataview bindingsource winforms

2
推荐指数
1
解决办法
5356
查看次数