如何在绑定之前连接asp.net中的2个或更多3个数据列?

时间:2014-09-19 14:28:39

标签: c# asp.net data-binding datatable

我有以下数据表。

clientcode   - jobcode - sitename
abc          bcd         http://ourlocaldomain.com/sites/

我需要一个新的列,其中值应为:http://ourlocaldomain.com.sites/abc/bcd

我的代码如下:

  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].

1 个答案:

答案 0 :(得分:1)

您现在分配表达式的方式,表达式为:

SiteName/ClientCodeJobCode

因此,在评估表达式时,代码会尝试获取SiteName列中的值,并将其除以ClientCodeJobCode列中的值。

根据MSDN(参见here),表达式中的字符串连接是使用+运算符完成的。

根据您的确切样本数据,这应该为您提供所需的输出:

jobSiteUrl.Expression = "SiteName + ClientCode + '/' + JobCode";

输出将是:

http://ourlocaldomain.com/sites/abc/bcd

这与您的示例网址(= http://ourlocaldomain.com.sites/abc/bcd)不同,但我相信您有错字。 .之前的sites应该是/,对吗?

如果在某些情况下您的网站名称不包含尾随/,您可以使用此表达式来检查短划线是否存在并添加它以防万一:

jobSiteUrl.Expression = "SiteName + IIF(SUBSTRING(SiteName, LEN(SiteName), 1) = '/', '', '/') + ClientCode + '/' + JobCode";