作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个绑定(bind)到数据集 (ds
) 的 GridView (gv
)。 Columns[1]
绑定(bind)到 ds
中名为 orderFilename
的字段; Columns[6]
是一个日期字段。
如果 Columns[6]
为空,我希望 Columns[1]
显示为文本;如果 Columns[6]
不为空,我希望 Columns[1]
显示为超链接,带有 url ~/directory/
+ orderFilename
.
我在网上找到了几个可能的解决方案,但似乎没有一个能满足我的要求。任何帮助将不胜感激。
最佳答案
我更喜欢远离 BoundFields
,因为下一个人似乎总是需要将它们转换为模板字段以进行自定义。我会推荐以下内容:
为第 1 列使用带有 Literal
控件的模板字段:
<asp:TemplateField HeaderText="File">
<ItemTemplate>
<asp:Literal ID="ltFilename" runat="server"
OnDataBinding="ltFilename_DataBinding" />
</ItemTemplate>
</asp:TemplateField>
然后为列控件实现OnDataBinding
:
protected void ltFilename_DataBinding(object sender, System.EventArgs e)
{
Literal lt = (Literal)(sender);
if (Eval("yourColumn6Field") == DBNull.Value)
{
// just show a text filename
lt.Text = Eval("orderFilename").ToString();
}
else
{
// produce the link
lt.Text = string.Format("<a href='{0}'>{1}</a>",
ResolveUrl("~/directory/" + Eval("orderFilename").ToString()),
Eval("orderFilename").ToString());
}
}
这样做的好处是您已将逻辑直接本地化到控件中。您可以轻松地将其换出并改变它,而不会意外影响网格的其他部分。
关于c# - 如何将 BoundField 转换为 HyperLinkField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124791/
我是一名优秀的程序员,十分优秀!