私は幸運なことなくいくつかの同様の質問を見てきました。私がしたいのは、特定の項目についてはリンクボタンを表示し、他の項目についてはハイパーリンクを表示するgridviewを持つことです。これは現在のコードです:プログラムでリンクボタンをgridviewに追加できますか?
public void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var data = (FileDirectoryInfo)e.Row.DataItem;
var img = new System.Web.UI.HtmlControls.HtmlImage();
if (data.Length == null)
{
img.Src = "/images/folder.jpg";
var lnk = new LinkButton();
lnk.ID = "lnkFolder";
lnk.Text = data.Name;
lnk.Command += new CommandEventHandler(changeFolder_OnCommand);
lnk.CommandArgument = data.Name;
e.Row.Cells[0].Controls.Add(lnk);
}
else
{
var lnk = new HyperLink();
lnk.Text = data.Name;
lnk.Target = "_blank";
lnk.NavigateUrl = getLink(data.Name);
e.Row.Cells[0].Controls.Add(lnk);
img.Src = "/images/file.jpg";
}
e.Row.Cells[0].Controls.AddAt(0, img);
}
}
最初のセルはTemplateFieldです。現在、すべてが正しく表示されますが、リンクボタンはCommandイベントハンドラを呼び出さず、ポストバックですべてのコントロールが消えます。
アイデア?
このソリューションをお寄せいただきありがとうございます。私はちょうどそこに狂った提案されたソリューションのすべての種類のこの同じ問題を研究するために約1時間を費やしました...そして、これは単純にページ負荷のポストバックチェックを取り除くことに関与しています。 –