将多个数据表列绑定到一个多行文本框

本文关键字:一个 文本 数据表 绑定 | 更新日期: 2023-09-27 18:31:16

我正在尝试将文本框绑定到包含一行的数据表。但是我希望文本框绑定到 4 列的串联。

我不确定在绑定期间如果不这样做是否可能。

下面的这个工作正常,但我也希望"SHIP_ADDRESS1"连接到我的多行文本框。

shipToTextbox.DataBindings.Add("Text",dataTbl, "SHIP_TO");

在绑定过程中有没有办法做到这一点?

编辑:

我向数据表添加了一个扩展方法,如下所示:

public static DataTable Concatenates(this DataTable datatable, string columnName, params string[] columns)
    {
        var column = new DataColumn(columnName, typeof(String));
        datatable.Columns.Add(column);
        var concatenation = string.Empty;
        foreach (var c in columns)
        {
            if (string.IsNullOrEmpty(concatenation))
            {
                concatenation = datatable.Rows[0][c].ToString().Trim();
            }
            else
            {
                concatenation = concatenation + Environment.NewLine + datatable.Rows[0][c].ToString().Trim();
            }
        }
        datatable.Rows[0][column] = concatenation;
        return datatable;
    }

我称之为:

shipToTextbox.DataBindings.Add("Text", dt.Concatenates("SHIP", "SHIP_TO", "SHIP_ADDRESS1", "SHIP_ADDRESS2", "SHIP_ADDRESS3"), "SHIP");

这是一个可接受的解决方案吗?有没有办法使用 LINQ 以更好的方式编写连接扩展方法?

将多个数据表列绑定到一个多行文本框

如果你在谈论xaml框架,你可以使用MultiValueConverters和ValueConverters。

但是,winforms绑定会生成两个重要且有用的事件:格式化和解析。

format 事件在

将数据从源拉取到控件时触发,Parse 事件在将数据从控件拉回数据源时触发。如果处理这些事件,则可以在绑定期间来回更改/重新键入值。