【发布时间】:2011-04-29 13:04:38
【问题描述】:
我想在 SQL SERVER 中创建一个计算列并将公式设置为此
([Category] + '.aspx?ID=' + [Post_ID])
虽然不工作......我错过了什么?
Category 和 Post_ID 是表中的当前列
【问题讨论】:
标签: asp.net sql sql-server sql-server-2005 tsql
我想在 SQL SERVER 中创建一个计算列并将公式设置为此
([Category] + '.aspx?ID=' + [Post_ID])
虽然不工作......我错过了什么?
Category 和 Post_ID 是表中的当前列
【问题讨论】:
标签: asp.net sql sql-server sql-server-2005 tsql
你有吗
SELECT [Category] + '.aspx?ID=' + [Post_ID]
FROM table
?
试试
SELECT CAST([Category] AS NVARCHAR(MAX)) + '.aspx?ID=' CAST([Post_ID] AS NVARCHAR(MAX))
FROM table
或根据列的数据类型指定最大大小。
上面的答案很糟糕。不要在数据层上格式化。表示层上的格式,即在标记中。例如:
<asp:HyperLinkField
HeaderText="LinkHeader"
DataNavigateUrlFormatString="{0}.aspx?ID={1}"
DataNavigateUrlFields="Category,Post_ID"
DataTextField="LinkName" />
(要正常工作,这还需要一个字段LinkName 存在于结果选择中)
或
<asp:Hyperlink runat= "server"
Text='<%# DataBinder.Eval(Container.DataItem, "LinkName").ToString() %>'
NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Category").ToString() + ".aspx?ID=" + DataBinder.Eval(Container.DataItem, "Post_ID").ToString() />
【讨论】:
我猜你可能错过了一个演员表。我同意这似乎不太可能成为计算列的候选者。
create table #t
(
Category varchar(50),
[Post_ID] int
)
alter table #t
add comp as ([Category] + '.aspx?ID=' + cast([Post_ID] as varchar(10)))
【讨论】:
这实际上是在最后为我整理出来的.....
NavigateUrl='<%# String.Format("{0}.aspx?ID={1}", DataBinder.Eval(Container.DataItem, "Category"), DataBinder.Eval(Container.DataItem, "Post_ID")) %>'
【讨论】: