当控件被数据绑定时,无法以编程方式向DatagridView的行集合中添加行,怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当控件被数据绑定时,无法以编程方式向DatagridView的行集合中添加行,怎么解决?相关的知识,希望对你有一定的参考价值。

参考技术A 1、确定“datagridview”已“启用添加”;
2、设置SqlDataAdapter的InsertCommand(SqlCommandBuilder的GetInsertCommand())后再用SqlDataAdapter的Update();
3、要更新的表必须有主键。

以编程方式触发时 UIRefreshControl 不刷新

【中文标题】以编程方式触发时 UIRefreshControl 不刷新【英文标题】:UIRefreshControl not refreshing when triggered programmatically 【发布时间】:2015-02-16 20:45:36 【问题描述】:

我试图在视图加载时显示刷新控件以显示我正在从 Parse 获取数据。刷新控件在应用程序运行时正常工作,但我无法从应用程序的任何位置以编程方式触发它。 这是似乎没有运行的代码:

 override func viewDidAppear(animated: Bool) 
    self.refresher.beginRefreshing()
 

这不仅不会运行,而且应用程序中的代码会更改刷新控件的属性。当我在应用程序中有此代码并显示来自用户交互的刷新时,刷新控件没有它通常没有的属性标题,也没有运行它应该运行的代码。

【问题讨论】:

检查这个问题/答案UIRefreshControl not working when called prorgammatically 【参考方案1】:

我需要在 setContentOffset 和 self.refreshControl?.sendActions(for: .valueChanged) 调用之间添加延迟。如果没有延迟,refreshControl 的属性标题将不会呈现。

这适用于 iOS 10 (Swift 3):

self.tableView.setContentOffset(CGPoint(x:0, y:self.tableView.contentOffset.y - (self.refreshControl!.frame.size.height)), animated: true)

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: 
  self.refreshControl?.sendActions(for: .valueChanged)
)

【讨论】:

我试过你的解决方案,但它没有动画。 第一个 self.tableView.setContentOffset(CGPoint(x:0, y:self.tableView.contentOffset.y - (self.refreshControl!.frame.size.height)), animated: true) + self.refreshControl?.beginRefreshing() 在 iOS 10 上为我工作。不需要 sendActions 调用。 谢谢。如果没有延迟,标题就不会出现! 我很惊讶没有人提出来:我建议直接调用所需的方法,而不是通过sendActions(for:) 方法使用目标操作。这对我来说似乎是一种解决方法 - 如果可以立即完成所有必要的工作,为什么还要等待 0.2 秒(或任何时间)?【参考方案2】:

这是一个适用于 10.3 的扩展:

extension UIRefreshControl 
    func refreshManually() 
        if let scrollView = superview as? UIScrollView 
            scrollView.setContentOffset(CGPoint(x: 0, y: scrollView.contentOffset.y - frame.height), animated: false)
        
        beginRefreshing()
        sendActions(for: .valueChanged)
    

【讨论】:

sendAction(for:) 引起了递归调用,该调用产生了意外的行为,使方法自身递归调用。除此之外,扩展效果很好。

以上是关于当控件被数据绑定时,无法以编程方式向DatagridView的行集合中添加行,怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

使用数据绑定控件在 DataGridView 中添加行

dgv添加行遇到过的问题并解决

以编程方式为 DataGrid 创建 WPF DataGridTemplateColumn

以编程方式向 Swift 中的视图添加约束时出错

在方法中以编程方式移动控件警告“未找到方法”和“控件可能无法响应”

WinForm C#如何将方法附加到以编程方式创建的控件