1

HyperLinkColumns を GridView に動的に追加しようとしています。次のコードがあります。

HyperLinkColumn objHC = new HyperLinkColumn();
objHC.DataNavigateUrlField = "title";
objHC.DataTextField = "Link text";
objHC.DataNavigateUrlFormatString = "id, title";
objHC.DataTextFormatString = "{2}";

GridView1.Columns.Add(objHC);

これは機能しないので、どうすれば HyperLinkColumn を GridView に追加できますか?

4

7 に答える 7

5

行がバインドされているときに追加したい場合があります。

protected void yourGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
        HyperLink hlControl = new HyperLink();
        hlControl.Text = e.Row.Cells[2].Text; //Take back the text (let say you want it in cell of index 2)
        hlControl.NavigateUrl = "http://www.stackoverflow.com";
        e.Row.Cells[2].Controls.Add(hlControl);//index 2 for the example
}
于 2008-11-27T22:02:47.137 に答える
1

DataBinding が行われる前にそれを行う必要があります。 GridView Eventsを確認してください。

于 2008-11-27T21:43:56.113 に答える
0

このスレッドが古いことは知っていますが、2 セントを追加せずにはいられませんでした。次のチュートリアルで説明されている手順は、私にとっては完璧に機能しました: ASP Alliance

于 2009-12-16T17:02:54.443 に答える
0

別の URL にリダイレクトするだけの場合は、HyperLink Web コントロールを使用して、RowDataBound イベントで GridView 行の目的のセルにプッシュします。
または
別の URL に送信する前にサーバー イベントを実行する場合は、これを試してください。
  1) GridView の RowDataBound イベントに LinkBut​​ton オブジェクトを追加します。
  2) このオブジェクトにデータを渡す必要がある場合は、CommandName、CommandArgument プロパティを設定します。
  3) GridView の RowCommand イベントを処理して、このイベントをキャプチャします。

于 2008-11-28T15:46:10.207 に答える
0

ちなみに、DataGridView を使用してデザイナーでリンク列を選択すると、問題は解決すると思います。DataGridView にはリンク列があります。「クリック」でイベントを追加するだけで、必要なものを取得できます。このソリューションは、DataGridView に切り替えることができる場合に機能します。

于 2008-11-28T15:48:43.323 に答える
-2

いろいろとごちゃ混ぜになっているようです。わかりません-そのコードはどのようにコンパイルされますか?

GridView の列コレクションは、"DataControlField" 型の列を受け入れることができます。HyperLinkField を初期化し、関連するプロパティ (テキスト、NavigateUrl、HeaderText、Target) を設定して、列コレクションに追加する必要があると思います。

HyperLinkColumn クラスは、DataGrid を使用している場合に意味があります (GridView の場合ではありません)。

それが役立つことを願っています。

于 2008-11-27T21:43:47.800 に答える