C# 在绑定之前,如何连接asp.net中的2个或更多3个数据列?
我有下面的数据表C# 在绑定之前,如何连接asp.net中的2个或更多3个数据列?,c#,asp.net,data-binding,datatable,C#,Asp.net,Data Binding,Datatable,我有下面的数据表 clientcode - jobcode - sitename abc bcd http://ourlocaldomain.com/sites/ 我需要一个新列,其中的值应改为: 我的守则如下: var keywordQuery = new KeywordQuery(site); keywordQuery.SortList.Add("Modified", SortDirection.Descending);
clientcode - jobcode - sitename
abc bcd http://ourlocaldomain.com/sites/
我需要一个新列,其中的值应改为:
我的守则如下:
var keywordQuery = new KeywordQuery(site);
keywordQuery.SortList.Add("Modified", SortDirection.Descending);
var dataTable = KQLUtilities.ExecuteKql(keywordQuery, queryText, selectedProperties.ToArray(), keywordQuery.SortList);
var jobSiteUrl = new DataColumn("JobSiteUrl");
jobSiteUrl.Expression = String.Format("{0}/{1}{2}", "SiteName", "ClientCode", "JobCode");
dataTable.Columns.Add(jobSiteUrl);
我的错误是:
Cannot find column [ClientCodeJobCode].
按照您现在指定表达式的方式,表达式将为:
SiteName/ClientCodeJobCode
因此,在计算表达式时,代码将尝试获取SiteName
列中的值,并将其与ClientCodeJobCode
列中的值相除
根据MSDN(请参阅),表达式中的字符串连接是使用+
运算符完成的
根据您的准确样本数据,这将为您提供所需的输出:
jobSiteUrl.Expression = "SiteName + ClientCode + '/' + JobCode";
产出将是:
http://ourlocaldomain.com/sites/abc/bcd
这与示例url(http://ourlocaldomain.com.sites/abc/bcd
),但我相信您的输入有误。站点
之前的
应该是/
,对吗
如果在某些情况下,您的站点名称不包含尾随的/
,您可以使用此表达式来检查破折号是否存在,并在需要时添加破折号:
jobSiteUrl.Expression = "SiteName + IIF(SUBSTRING(SiteName, LEN(SiteName), 1) = '/', '', '/') + ClientCode + '/' + JobCode";
您是否尝试在数据表中使用计算列?是的,我在那里输入了一个错误,您之前在注释中的代码工作得非常好!