Я предпочитаю держаться подальше от BoundFields
специально, потому что следующий парень всегда должен конвертировать их в поля шаблона в любом случае для настройки. Я бы порекомендовал следующее:
Используйте поле шаблона с элементом управления Literal
для столбца 1:
<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());
}
}
Преимущество этого заключается в том, что вы локализовали логику непосредственно для элемента управления. Вы можете легко поменять его и заменить, не затрагивая случайно другие части сетки.