Je tente de créer un calendrier qui est simplement une interface utilisateur simple pour afficher les dates et les dates des utilisateurs de notre système. J'ai remplacé l'événement "DayRender" du calendrier pour accéder à chaque cellule, puis insérer un couple de contrôles dynamiques pour afficher des données spécifiques. L'affichage des commandes fonctionne très bien. Cependant, j'ai récemment voulu ajouter un LinkButton avec des arguments de commande et capturer l'événement pour exécuter une autre logique et changer l'interface utilisateur. Le LinkButton est correctement affiché et s'affiche comme un simple "" avec l'ID affecté. Cependant, cliquer sur le lien ne fait rien et il semble que la partie normale "href = '... javascript action ...'" du lien ne soit pas générée. J'ai le sentiment que tout cela est dû au fait que j'ajoute le contrôle à l'étape du rendu du jour dans le cycle de vie de la page. Mais si c'était le cas, le contrôle ne se montrerait probablement pas du tout.Calendrier, Dynamic LinkButton Aide CommandEventHandler
Des idées sur pourquoi l'action de clic n'est pas encore ajouté le texte et tout le reste sont? Le code est ci-dessous.
Merci pour votre temps
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
if (Schedule != null)
{
var dayReq = from day in Schedule
where day.RequiredDate == e.Day.Date
where day.RequiredQty != 0
select day;
if (dayReq.FirstOrDefault() != null)
{
//Open the Date
e.Cell.Controls.Add(new LiteralControl("<br /><div class=\"auth-sched-req\">Req Qty: <strong>" + String.Format("{0:#,#.###}", dayReq.FirstOrDefault().RequiredQty) + "</strong><br />Prom Date: "));
//Create a link button for the promise date
LinkButton lb = new LinkButton();
lb.ID = dayReq.FirstOrDefault().ItemId.ToString();
lb.Text = dayReq.FirstOrDefault().RequiredDate.ToShortDateString();
lb.CommandName = "ShowPromise";
lb.CommandArgument = dayReq.FirstOrDefault().ItemId.ToString();
lb.Command +=new CommandEventHandler(lb_Command);
e.Cell.Controls.Add(lb);
//Close the Date
e.Cell.Controls.Add(new LiteralControl("</div>"));
}
}
}
protected void lb_Command(Object sender, CommandEventArgs e)
{
//Do some magic here
Response.Write(e.CommandArgument.ToString());
}
Cela ressemble beaucoup à un travail autour. Oui, cela me donnerait probablement ce que je veux, mais pourquoi le serveur ne génère-t-il pas automatiquement le lien comme il est supposé le faire? Je voudrais vraiment comprendre pourquoi ce que j'ai (basé sur docs MSDN) ne fonctionne pas. –
(je crois) vous ne pouvez pas câbler des événements pendant le rendu. vous devez le faire avant. – y34h