GridViewとHyperlink
現在仕事で、VS2008、.Net Framework3.5 でASPなモノを開発しているのですが、実装中に気づいた事をメモがてら。
GridViewの列にリンクを設定したいというときのサンプル。
いろいろと試行錯誤した結果(まだ未実装なので、完全に参考にしないでください(検索等でたどり着いた方へ))
まず、標準で選べるFieldのHyperLinkFieldを使った場合、
<asp:HyperLinkField DataTextField="Name" DataNavigateUrlFields="ID" DataNavigateUrlFormatString="hoge.aspx?ID={0}" />
という形で、列がハイパーリンクになるフィールドのaspタグを設定orソースに直書きで書き、バインドするという感じ。
NavigateUrlにして、直接決め打ちでぶっ飛ばす というのも可能。
<asp:HyperLink runat="server" id="HyperLink" Text="<%# Eval("Name") %>" NavigateUrl='hoge.aspx?ProjectID=<%# Eval("DatasourceField") %>'></asp:HyperLink>
という形のもがベターかも。
Eval関数でデータフィールドをぶち込む感じ。
<asp:GridView ID="GridView1" runat="server"> <Columns> <asp:TemplateField HeaderText="ColumnHeader "> <ItemTemplate> <asp:HyperLink runat="server" id="Link" Text="<%# Eval("Name") %>" NavigateUrl='hoge.aspx?ProjectID=<%# Eval("DatasourceField") %>'></asp:HyperLink> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
これが今回の実装ではベストかな と
TemplateFieldでパーソナライズドした行を作り、ItemTemplateプロパティの中に上でやったようなことをつらつらと書く感じ。
昼休みがもう終わるので、ちょっと追記するかもしれませんが、これくらいで。
あと、メインPCが死んだので家からTwitterとかできないです しくしく