gpt4 book ai didi

c# - 如何将 BoundField 转换为 HyperLinkField?

转载 作者:行者123 更新时间:2023-11-30 15:06:55 26 4
gpt4 key购买 nike

我有一个绑定(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com