Вызов пользовательского метода из выражения столбца таблицы данных - PullRequest
4 голосов
/ 23 февраля 2010

с использованием c #, win2008 winforms

У меня есть представление данных, которое я программно связываю с источником привязки, который связан с набором данных с 1 таблицей.

После заполнения набора данных с помощью sqlAdaptor я хочу добавить новый столбец в набор данных, а в новом столбце заполнить его результатом, полученным в результате вызова пользовательского метода в форме.

Код Например, ниже, но я получаю «Выражение содержит неопределенный вызов функции this.Test ()

Разрешено ли вызывать методы как таковые в выражении столбца

заранее спасибо за любую помощь веселит

this.dsProdOrdLst1.ProdOrder.Columns.Add("sOrderType", typeof(string), 
    "this.Test(order_type)"); // order_type is another column in the dataset

в другом месте в классе формы есть метод

public int Test(int orderType)
{
    return 10; //return a test value
}

1 Ответ

0 голосов
/ 23 февраля 2010

AFAIK, эти выражения (известные как выражения ADO.NET ) не могут вызывать какие-либо пользовательские функции. Однако следует вручную заполнить новый столбец тривиально:

this.dsProdOrdLst1.ProdOrder.Columns.Add("sOrderType", typeof(string));

foreach (DataRow row in dsProdOrdLst1.ProdOrder.Rows)
{
    row["sOrderType"] = Test((int) row["order_type"]);
}

В качестве альтернативы вы можете реализовать всю свою функцию в выражении ADO.NET, но вы действительно хотите сделать это только для очень простых функций, иначе это будет беспорядок:

IIF(order_type = 0, 'Mail', IIF(order_type = 1, 'Phone', 'Online'))

Документация DataColumn.Expression содержит список поддерживаемых функций (прокрутите довольно далеко вниз, чтобы найти его).

...