[英]Bind multiple datatable columns to one multiline textbox
我正在嘗試將文本框綁定到包含一行的數據表。 但我希望將文本框綁定到4列的串聯。
我不確定是否可以在綁定期間不這樣做。
接下來的這個工作正常,但我也希望將“ SHIP_ADDRESS1”連接到我的多行文本框中。
shipToTextbox.DataBindings.Add("Text",dataTbl, "SHIP_TO");
綁定期間有辦法嗎?
編輯:
我向DataTable添加了擴展方法,如下所示:
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更好地編寫Concatenate擴展方法?
如果您正在談論xaml框架,則可以使用MultiValueConverters和ValueConverters。
但是,winforms綁定會生成兩個重要且有用的事件:Format和Parse。
將數據從源中拉到控件中時,將觸發format事件;將數據從控件中拉回到數據源中時,將觸發Parse事件。 如果處理這些事件,則可以更改/重新鍵入綁定期間來回移動的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.