2013-07-23 3 views
0

J'ai deux sites dans une application Web. Ce que je veux faire est de mettre à jour la liste du site A à partir d'une partie Web dans le site B en utilisant un bouton. Le problème est que si je n'utilise pas Page.IsPostBack, la page jette une exception non gérée lorsque le bouton est cliqué, MAIS, la liste dans le site A est mise à jour. Mais si j'utilise Page.IsPostBack, je ne reçois pas l'exception mais le processus ne passe pas; en fait, il ne passe même pas à l'eventhandler lorsque le bouton est cliqué.Erreur sur la publication GridView

if (!Page.IsPostBack) 
      { 
       using (SPSite site = new SPSite(SPContext.Current.Web.Url)) 
       { 
        SPQuery query = new SPQuery(); 
        query.Query = @"Query><OrderBy><FieldRef Name='Title' /></OrderBy><Query>"; 
        query.ViewAttributes = "<FieldRef Name='Title' />"; 
        query.ViewFields = string.Concat(
         "<FieldRef Name='Title' />", 
         "<FieldRef Name='Status' />", 
         "<FieldRef Name='Severity' />", 
         "<FieldRef Name='Comment' />"); 

        query.ViewFieldsOnly = true; 
        showGrid = new GridView(); 

        this.Controls.Add(showGrid); 

        SPList list = SPContext.Current.Site.RootWeb.Lists["Ticket List"]; 
        DataTable dt = new DataTable();      

        ButtonField approveBtn = new ButtonField(); 
        approveBtn.ButtonType = ButtonType.Button; 
        approveBtn.CommandName = "Update"; 


        approveBtn.Text = "Approve"; 
        showGrid.Columns.Add(approveBtn); 

        dt = list.Items.GetDataTable().Copy(); 
        dt = list.GetItems(query).GetDataTable(); 
        showGrid.DataSource = dt; 

        showGrid.DataBind(); 

        showGrid.RowCommand += new GridViewCommandEventHandler(inventoryGridView_RowCommand); 
       } 
      } 

eventHandler

if (e.CommandName == "Update") 
      { 
       int index = Convert.ToInt32(e.CommandArgument); 
       GridViewRow row = showGrid.Rows[index]; 
       using (SPSite site = new SPSite(SPContext.Current.Web.Url)) 
       { 
        using (SPWeb Web = site.OpenWeb()) 
        { 
         Web.AllowUnsafeUpdates = true; 
         // Open List 
         SPList list = SPContext.Current.Site.RootWeb.Lists["Ticket List"]; 
         SPListItem _listItem = list.Items[row.RowIndex]; 
         _listItem["Status"] = "Approved"; 
         _listItem.Update(); 
         Web.AllowUnsafeUpdates = false; 
        } 
       } 
      } 

Répondre

0

En cas de chargement de la page que vous créez la grille et l'ajouter à la collection Controls. Donc, quand vous ne partez pas pour Postback .... il va à nouveau créer le contrôle, mais quand vous essayez d'ajouter il va jeter l'exception.

Vérifiez-le en mettant au point la solution.

+0

Je ne suis pas sûr si je vous ai bien compris. Pourriez-vous élaborer? Merci pour la réponse! – Nath

+0

Avez-vous déboguer votre solution? Où avez-vous attribué l'ID pour la grille? – Pushpendra

+0

Tout est fait dans le bloc OnLoad – Nath

Questions connexes