我想在SQL SERVER中创建一个计算列,并将公式设置为此
([Category] + '.aspx?ID=' + [Post_ID])
虽然没有工作......我错过了什么?
Category和Post_ID是表格中的当前列
答案 0 :(得分:3)
你做
SELECT [Category] + '.aspx?ID=' + [Post_ID]
FROM table
尝试
SELECT CAST([Category] AS NVARCHAR(MAX)) + '.aspx?ID=' CAST([Post_ID] AS NVARCHAR(MAX))
FROM table
或根据列的数据类型指定最大大小。
以上回答很糟糕。不要在数据层上格式化。在演示层上的格式,即在标记中。 E.g:
<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() />
答案 1 :(得分:1)
我猜你可能错过了演员。我同意这似乎不太适合计算列。
create table #t
(
Category varchar(50),
[Post_ID] int
)
alter table #t
add comp as ([Category] + '.aspx?ID=' + cast([Post_ID] as varchar(10)))
答案 2 :(得分:0)
这实际上最终为我排序了......
NavigateUrl='<%# String.Format("{0}.aspx?ID={1}", DataBinder.Eval(Container.DataItem, "Category"), DataBinder.Eval(Container.DataItem, "Post_ID")) %>'