【问题标题】:How to bind variable with DataRow in DataTable?如何在 DataTable 中将变量与 DataRow 绑定?
【发布时间】:2018-09-24 06:34:17
【问题描述】:

我有以下代码:

string car = "cabrio";
int number = 20;

DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Number", typeof(int));
dt.Rows.Add(car, number);

car = "sedan";
number = 30;

现在我希望如果这 2 个变量(“car”和“number”)发生更改,DataTable dt 中的 DataRow 应该自动更改为新值。

如何将这 2 个变量与 DataRow 绑定? 有可能吗?

BR

编辑: 更好的代码示例:

using System;
using System.Data;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Class object1 = new Class("cabrio", 20);
        public DataTable DT = new DataTable();
        public DataGridView DGV = new DataGridView();

        public Form1()
        {
            InitializeComponent();

            DT.Columns.Add("Car");
            DT.Columns.Add("Value");

            DT.Rows.Add(object1.car, object1.value);

            DGV.DataSource = DT;

            this.Controls.Add(DGV);
        }

        private void btn_ChangeValue_Click(object sender, EventArgs e)
        {
            object1.car = "sedan";
            object1.value = 30;
        }
    }
}

还有Class我在这里用过:

namespace test
{
    public class Class
    {
        public string car;
        public int value;

        public Class(string nameOfCar, int valueOfNumber)
        {
            car = nameOfCar;
            value = valueOfNumber;
        }
    }
}

所以,现在如果我想通过单击 btn_ChangeValue 更改 DataGridView 中的值,它不起作用。

【问题讨论】:

    标签: c# variables datatable bind datarow


    【解决方案1】:

    您不能将DataTable / DataRow 绑定到局部变量或字段。 .NET 中内置了一些数据绑定机制,但它们往往与 UI 相关,并且依赖于非常复杂的属性更改通知和接口,例如 INotifyPropertyChangedICustomTypeDescriptor - 非常小众的东西。

    也许这是一个 X/Y 问题,如果您告诉我们为什么您尝试这样做,可以建议一个更好的替代方案。坦率地说,我还怀疑DataTable 不太可能成为大多数问题的解决方案的一部分。

    【讨论】:

    • 好的,所以我有数据(带有一些文件的简单对象,如字符串和双精度);这些对象存储在列表中。并且这些对象的一些文件每隔一段时间就会发生变化,即 1 分钟(在另一个线程中)。我想在 WinForm 中的表格上显示这些对象文件(我正在使用 DataGridView),所以我将这些 object 字段放入 DataTable,然后将该 DataTable 用作 DataGridViewDataSource。现在我的目标是,如果这些对象会改变,我想在 WinForm 的桌子上看到它
    • @MateuszWarzyc 如果您使用 winforms 数据绑定 API(DataSource 和 Bindings.Add)绑定到 DataTable,这应该已经可以工作了。你能准确地展示你是如何绑定 UI 的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多