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());
}
}
これの利点は、ロジックをコントロールに直接ローカライズできることです。グリッドの他の部分に誤って影響を与えることなく、簡単に交換して変更できます。