Ich habe einige ähnliche Fragen ohne Glück durchgesehen. Was ich tun möchte, ist eine Gridview, die für bestimmte Elemente einen Linkbutton zeigt und für andere Elemente einen Hyperlink anzeigt. Dies ist der Code, den ich derzeit haben:Kann ich programmgesteuert eine Verknüpfungsschaltfläche zu Gridview hinzufügen?
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);
}
}
, wo die erste Zelle ist eine Template. Momentan wird alles korrekt angezeigt, aber die Linkschaltflächen rufen den Ereignishandler Command nicht auf und alle Steuerelemente verschwinden beim Postback.
Irgendwelche Ideen?
Vielen Dank für diese Lösung !!! Ich habe gerade ungefähr eine Stunde damit verbracht, das gleiche Problem mit allen möglichen verrückten Lösungsvorschlägen zu erforschen ... und dieses Problem beinhaltete einfach das Entfernen des Post-Back-Checks beim Laden der Seite. –