2009-06-22 11 views
1

J'ai le code suivant. Je construis un programme Gramiewamally puis je passe à travers et changer l'une des colonnes à linkbuttons. Malheureusement, il ne rappelle jamais la méthode lb_Click côté serveur. Quelqu'un at-il fait face à cela?Comment puis-je appeler une méthode côté serveur à partir d'un lien de lien dans une grille que je construis par programmation?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (CommonMethods.logOn(Request.ServerVariables["LOGON_USER"])) 
     { 
      Response.Redirect("http://www.google.com"); 
     } 

     // Now we have to build the questions 
     using (var context = new nVoteDataContext()) 
     { 
      var retrievedQuestions = from q in context.questions 
            select new 
               { 
                q.id, 
                q.question1, 
                q.questionType 
               }; 

      GridView_questions.DataSource = retrievedQuestions; 
      GridView_questions.DataBind(); 
      GridView_questions.HeaderRow.Cells[0].Text = "#"; 
      GridView_questions.HeaderRow.Cells[1].Text = "Question"; 

      foreach (GridViewRow s in GridView_questions.Rows) 
      { 
       if (s.RowType == DataControlRowType.DataRow) 
       { 
        var lb = new LinkButton(); 
        lb.CausesValidation = true; 
        lb.Attributes.Add("runat", "server"); 
        lb.CommandName = "lb_Click"; 
        lb.CommandArgument = s.Cells[0].Text; 
        lb.Text = s.Cells[1].Text; 
        s.Cells[1].Text = string.Empty; 
        s.Cells[1].Controls.Add(lb); 
       } 
      } 

     } 
    } 

    public void lb_Click(object sender, EventArgs e) 
    { 
     foreach (GridViewRow s in GridView_questions.Rows) 
     { 
      if (s.RowType == DataControlRowType.DataRow) 
      { 
       s.BackColor = System.Drawing.Color.Red; 
      } 
     } 
    } 
} 
+0

Si vous faites beaucoup avec des commandes dynamiques vérifier ces deux articles: http: // www. codeproject.com/kb/aspnet/dynamiccontrolsByLeon.aspx, http://aspalliance.com/articleViewer.aspx?aId=134&pId= – russau

Répondre

1

Vous devez ajouter un gestionnaire pour l'linkbutton appeler lb_Click sur l'événement Click

lb.Click += lb_Click; 
+1

Wow - Je suis bête! :-) Merci beaucoup! – Matt