我想在SQL SERVER中创建一个计算列,并将公式设置为以下内容:
([Category] + '.aspx?ID=' + [Post_ID])
不起作用......我缺失什么?
“分类”和“文章ID”是表格中的当前列。
([Category] + '.aspx?ID=' + [Post_ID])
不起作用......我缺失什么?
“分类”和“文章ID”是表格中的当前列。
Do you do
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")) %>'