2009-06-22 2 views
1

Ich habe den folgenden Code. Ich baue eine grdiview programmatisch dann gehe ich durch und ändere eine der Spalten zu Linkbuttons. Leider ruft es niemals zur serverseitigen lb_Click-Methode zurück. Hat jemand das konfrontiert?Wie kann ich eine serverseitige Methode von einem Linkbutton innerhalb einer Gridview aufrufen, die ich programmatisch erstelle?

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

anrufen Wenn Sie viel mit dynamischen Kontrollen diese beiden Artikel überprüfen tun: http: // www. codeproject.com/kb/aspnet/dynamiccontrolsByLeon.aspx, http://aspalliance.com/articleViewer.aspx?aId=134&pId= – russau

Antwort

1

Sie benötigen einen Handler für das Linkbutton hinzufügen lb_Click auf dem Click-Ereignis

lb.Click += lb_Click; 
+1

Wow - ich bin dumm! :-) Danke vielmals! – Matt

Verwandte Themen