Actualisation de la GridView après la mise à jour

Fondamentalement, le contrôle GridView n'est pas en montrant les valeurs mises à jour après la mise à jour de l'événement se produit. J'ai cherché sur le forum et vu beaucoup de solutions mais rien n'a fonctionné quand j'ai essayé de l'en sortir.

La base de données est certainement mis à jour mais les mises à jour ne sont visibles qu'une fois que j'ai redémarrer le projet.

Ce que j'ai fait:

  • Très libéral utilisation de GridView1.Databind();
  • L'utilisation prudente des GridView1.Databind();
  • Page_Load contient (!IsPostBack) wrapper avec GridView1.Databind();
  • Placé GridView1.Databind(); dans le GridView1_RowUpdating événement.
  • ...et un certain nombre d'autres choses que j'ai essayé après avoir cherché sur le forum.

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using System.IO;
public partial class Styles_ConsolidatedProducers : System.Web.UI.Page
{
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataBind();
}
else
{
//GridView1.DataBind();
}
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
protected void cmdReset_Click(object sender, EventArgs e)
{
ToggleCheckState(false);
cboBusinessSource.ClearSelection();
cboConsolidatedProducer.ClearSelection();
cboRelinkToConsolidatedProducer.ClearSelection();
txtSearch.Text = "";
lblRelinkToConsolidatedProducer.Visible = false;
cboRelinkToConsolidatedProducer.Visible = false;
cmdRelink.Visible = false;
GridView1.DataBind();
}
protected void cboConsolidatedProducer_SelectedIndexChanged(object sender, EventArgs e)
{
//GridView1.DataBind();
}
protected void cboBusinessSource_SelectedIndexChanged(object sender, EventArgs e)
{
//GridView1.DataBind();
}
protected void cmdUnlink_Click(object sender, EventArgs e)
{
{
bool atLeastOneRowUpdated = false;
//Iterate through the Products.Rows property
foreach (GridViewRow row in GridView1.Rows)
{
//Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("chkUpdate");
if (cb != null && cb.Checked)
{
//Edit row is true.
atLeastOneRowUpdated = true;
//Get the MasterID for the selected row.
int MasterID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
SqlConnection con = new SqlConnection("FOO");
con.Open();
string updateSQL = "UPDATE tblMasterDetail " + "SET     ProducerConsolidatedID = @ProducerConsolidatedID, ProducerConsolidatedName = @ProducerConsolidatedName WHERE MasterID = @MasterID";
Console.WriteLine(updateSQL);
SqlCommand cmd = new SqlCommand(updateSQL, con);
cmd.Parameters.Add("@MasterID", SqlDbType.Int, 10, "MasterID");
cmd.Parameters.Add("@ProducerConsolidatedID", SqlDbType.NVarChar, 20, "ProducerConsolidatedID");
cmd.Parameters.Add("@ProducerConsolidatedName", SqlDbType.NVarChar, 20, "ProducerConsolidatedName");
//cmd.Parameters["@ProducerConsolidatedID"].Value = MasterID;
cmd.Parameters["@MasterID"].Value = MasterID;
cmd.Parameters["@ProducerConsolidatedID"].Value = "XX";
cmd.Parameters["@ProducerConsolidatedName"].Value = "XX";
//Update the row.
cmd.ExecuteNonQuery();
GridView1.DataBind();
con.Close();
ToggleCheckState(false);
lblUpdatedRecords.Text += string.Format(
"Record unlinked: {0}<br />", MasterID);
//"This would have updated ProductID {0}<br />", MasterID);
}
}
//Show the Label if at least one row was deleted...
lblUpdatedRecords.Visible = atLeastOneRowUpdated;
}
}
private void ToggleCheckState(bool checkState)
{
//Iterate through the Products.Rows property
foreach (GridViewRow row in GridView1.Rows)
{
//Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("chkUpdate");
if (cb != null)
cb.Checked = checkState;
}
}
protected void cmdUncheckAll_Click(object sender, EventArgs e)
{
ToggleCheckState(false);
cboRelinkToConsolidatedProducer.Visible = false;
lblRelinkToConsolidatedProducer.Visible = false;
cmdRelink.Visible = false;
}
protected void txtSearch_TextChanged(object sender, EventArgs e)
{
//GridView1.DataBind();
}
protected void cboRelinkToConsolidatedProducer_SelectedIndexChanged(object sender, EventArgs e)
{
//Get value form dropdown.
txtRelinkToConsolidatedProducerID.Text = cboRelinkToConsolidatedProducer.SelectedItem.Value;
//Get value form dropdown.
txtRelinkToConsolidatedProducerName.Text = cboRelinkToConsolidatedProducer.SelectedItem.Text;
cmdRelink.Visible = true;
//GridView1.DataBind();
}
protected void cmdRelinkTo_Click(object sender, EventArgs e)
{
lblRelinkToConsolidatedProducer.Visible = true;
cboRelinkToConsolidatedProducer.Visible = true;
}
protected void cmdRelink_Click(object sender, EventArgs e)
{
bool atLeastOneRowUpdated = false;
//Iterate through the Products.Rows property
foreach (GridViewRow row in GridView1.Rows)
{
//Access the CheckBox
CheckBox cb = (CheckBox)row.FindControl("chkUpdate");
if (cb != null && cb.Checked)
{
//Edit row is true.
atLeastOneRowUpdated = true;
//Get the MasterID for the selected row.
int MasterID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
SqlConnection con = new SqlConnection("FOO");
//con.Open();
string updateSQL = "UPDATE tblMasterDetail " + "SET ProducerConsolidatedID = @ProducerConsolidatedID, ProducerConsolidatedName = @ProducerConsolidatedName WHERE MasterID = @MasterID";
Console.WriteLine(updateSQL);
SqlCommand cmd = new SqlCommand(updateSQL, con);
cmd.Parameters.Add("@MasterID", SqlDbType.Int, 10, "MasterID");
cmd.Parameters.Add("@ProducerConsolidatedID", SqlDbType.NVarChar, 20, "ProducerConsolidatedID");
cmd.Parameters.Add("@ProducerConsolidatedName", SqlDbType.NVarChar, 20, "ProducerConsolidatedName");
cmd.Parameters["@MasterID"].Value = MasterID;
cmd.Parameters["@ProducerConsolidatedID"].Value = txtRelinkToConsolidatedProducerID.Text; 
cmd.Parameters["@ProducerConsolidatedName"].Value = txtRelinkToConsolidatedProducerName.Text;
con.Open();
//Update the row.
cmd.ExecuteNonQuery();
GridView1.DataBind();
con.Close();
ToggleCheckState(false);
lblUpdatedRecords.Text += string.Format(
"Records relinked: {0}<br />", MasterID);
//"This would have updated ProductID {0}<br />", MasterID);
cboRelinkToConsolidatedProducer.Visible = false;
lblRelinkToConsolidatedProducer.Visible = false;
cmdRelink.Visible = false;
}
}
//Show the Label if at least one row was deleted...
lblUpdatedRecords.Visible = atLeastOneRowUpdated;
}
protected void cmdRefresh_Click(object sender, EventArgs e)
{
GridView1.DataBind();
}

}

Balisage:

<%@ Page Language="C#" AutoEventWireup="true" Debug="true"     EnableEventValidation="true" CodeFile="Search.aspx.cs" Inherits="Styles_ConsolidatedProducers"
EnableViewStateMac ="false" EnableSessionState="True" ValidateRequest ="false" ViewStateEncryptionMode ="Never" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Producer Search</title>
<style type="text/css">
.style1
{
font-family: Calibri;
}
.style2
{
color: #FFFFFF;
}
.style3
{
font-size: xx-large;
}
#form1
{
font-family: Calibri;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div style="background-color: #000000; width: 1251px;">
<asp:Image ID="Image1" runat="server" Height="63px" ImageAlign="Left" 
ImageUrl="~/BM.jpg" Width="93px" />
<br />
<span class="style1">
<span class="style2"><span class="style3">search</span></span></span><br 
class="style3" />
<span class="style1"><span class="style2">
<br />
</span></span>&nbsp;
<asp:Label ID="lblConsolidatedProducer" runat="server" style="color: #FFFFFF" 
Text="Consol. Producer:"></asp:Label>
<asp:DropDownList ID="cboConsolidatedProducer" AppendDataBoundItems="true" runat="server" 
AutoPostBack="True" DataSourceID="ConsolidatedProducer" 
DataTextField="ProducerConsolidatedName" 
DataValueField="ProducerConsolidatedID" Height="22px" Width="259px" 
onselectedindexchanged="cboConsolidatedProducer_SelectedIndexChanged">
<asp:ListItem Value="%" Selected="True">None</asp:ListItem>
<asp:ListItem Value="XX">Unlinked</asp:ListItem>
</asp:DropDownList>
<span class="style1">
<asp:Label ID="lblBusinessSource" runat="server" style="color: #FFFFFF" 
Text="Source:"></asp:Label>
</span>
<asp:DropDownList ID="cboBusinessSource" AppendDataBoundItems="true" 
runat="server" AutoPostBack="True" 
DataSourceID="BusinessSource" DataTextField="BusinessSourceCode" 
DataValueField="BusinessSourceCode" Height="22px" Width="65px" 
onselectedindexchanged="cboBusinessSource_SelectedIndexChanged">
<asp:ListItem Value="%" Selected="True">All</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lblSearch" runat="server" style="color: #FFFFFF" 
Text="Producer Name:"></asp:Label>
<asp:TextBox ID="txtSearch" runat="server" 
ontextchanged="txtSearch_TextChanged" AutoCompleteType="Disabled" 
AutoPostBack="True" MaxLength="50"></asp:TextBox>
<asp:SqlDataSource ID="BusinessSource" runat="server" 
ConnectionString="<%$ ConnectionStrings:BMBESQLConnectionString %>" 
SelectCommand="SELECT DISTINCT [BusinessSourceCode] FROM [tblMasterDetail] WHERE ([BusinessSourceCode] IS NOT NULL)" 
CancelSelectOnNullParameter="False">
</asp:SqlDataSource>
<asp:SqlDataSource ID="MasterDetail" runat="server" 
ConnectionString="<%$ ConnectionStrings:BMBESQLConnectionString %>" 
SelectCommand="SELECT MasterID, SystemSourceCode, BusinessSourceCode, PRODUCERMASTERID, PRODUCERCONSOLIDATEDID, ProducerConsolidatedName, GWP, FINMISNATIONALCODE, PRODUCERNATIONALCODE, PRODUCERNAME, [Update] FROM tblMasterDetail" EnableCaching="True"
FilterExpression="[ProducerConsolidatedID] LIKE '{0}%' and [BusinessSourceCode] LIKE '{1}%' and [ProducerName] Like '%{2}%'" 
CancelSelectOnNullParameter="False" 
OldValuesParameterFormatString="original_{0}" 
InsertCommand="INSERT INTO [tblMasterDetail] ([SystemSourceCode], [BusinessSourceCode], [PRODUCERMASTERID], [PRODUCERCONSOLIDATEDID], [ProducerConsolidatedName], [GWP], [PRODUCERNATIONALCODE], [FINMISNATIONALCODE], [PRODUCERNAME], [Update]) VALUES (@SystemSourceCode, @BusinessSourceCode, @PRODUCERMASTERID, @PRODUCERCONSOLIDATEDID, @ProducerConsolidatedName, @GWP, @PRODUCERNATIONALCODE, @FINMISNATIONALCODE, @PRODUCERNAME, @Update);" 
DeleteCommand="DELETE FROM [tblMasterDetail] WHERE [MasterID] = @original_MasterID AND (([SystemSourceCode] = @original_SystemSourceCode) OR ([SystemSourceCode] IS NULL AND @original_SystemSourceCode IS NULL)) AND (([BusinessSourceCode] = @original_BusinessSourceCode) OR ([BusinessSourceCode] IS NULL AND @original_BusinessSourceCode IS NULL)) AND (([PRODUCERMASTERID] = @original_PRODUCERMASTERID) OR ([PRODUCERMASTERID] IS NULL AND @original_PRODUCERMASTERID IS NULL)) AND (([PRODUCERCONSOLIDATEDID] = @original_PRODUCERCONSOLIDATEDID) OR ([PRODUCERCONSOLIDATEDID] IS NULL AND @original_PRODUCERCONSOLIDATEDID IS NULL)) AND (([ProducerConsolidatedName] = @original_ProducerConsolidatedName) OR ([ProducerConsolidatedName] IS NULL AND @original_ProducerConsolidatedName IS NULL)) AND (([GWP] = @original_GWP) OR ([GWP] IS NULL AND @original_GWP IS NULL)) AND (([PRODUCERNATIONALCODE] = @original_PRODUCERNATIONALCODE) OR ([PRODUCERNATIONALCODE] IS NULL AND @original_PRODUCERNATIONALCODE IS NULL)) AND (([FINMISNATIONALCODE] = @original_FINMISNATIONALCODE) OR ([FINMISNATIONALCODE] IS NULL AND @original_FINMISNATIONALCODE IS NULL)) AND (([PRODUCERNAME] = @original_PRODUCERNAME) OR ([PRODUCERNAME] IS NULL AND @original_PRODUCERNAME IS NULL)) AND (([Update] = @original_Update) OR ([Update] IS NULL AND @original_Update IS NULL))" 
ConflictDetection="CompareAllValues">
<DeleteParameters>
<asp:Parameter Name="original_MasterID" />
<asp:Parameter Name="original_SystemSourceCode" />
<asp:Parameter Name="original_BusinessSourceCode" />
<asp:Parameter Name="original_PRODUCERMASTERID" />
<asp:Parameter Name="original_PRODUCERCONSOLIDATEDID" />
<asp:Parameter Name="original_ProducerConsolidatedName" />
<asp:Parameter Name="original_GWP" />
<asp:Parameter Name="original_PRODUCERNATIONALCODE" />
<asp:Parameter Name="original_FINMISNATIONALCODE" />
<asp:Parameter Name="original_PRODUCERNAME" />
<asp:Parameter Name="original_Update" />
</DeleteParameters>
<FilterParameters>
<asp:ControlParameter ControlID="cboConsolidatedProducer" 
Name="ProducerConsolidatedID" PropertyName="SelectedValue" 
DefaultValue="" ConvertEmptyStringToNull="true" />
<asp:ControlParameter ControlID="cboBusinessSource" Name="BusinessSourceCode" 
PropertyName="SelectedValue" ConvertEmptyStringToNull="true" 
DefaultValue=" " />
<asp:ControlParameter ControlID="txtSearch" DefaultValue=" " Name="ProducerName" 
PropertyName="Text" Type="String" />
</FilterParameters>
<InsertParameters>
<asp:Parameter Name="SystemSourceCode" />
<asp:Parameter Name="BusinessSourceCode" />
<asp:Parameter Name="PRODUCERMASTERID" />
<asp:Parameter Name="PRODUCERCONSOLIDATEDID" />
<asp:Parameter Name="ProducerConsolidatedName" />
<asp:Parameter Name="GWP" />
<asp:Parameter Name="PRODUCERNATIONALCODE" />
<asp:Parameter Name="FINMISNATIONALCODE" />
<asp:Parameter Name="PRODUCERNAME" />
<asp:Parameter Name="Update" />
</InsertParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="ConsolidatedProducer" runat="server" 
ConnectionString="<%$ ConnectionStrings:BMBESQLConnectionString %>" 
SelectCommand="SELECT DISTINCT ProducerConsolidatedName, ProducerConsolidatedID FROM tblProducerConsolidated WHERE (MakeConsolidated = 1) ORDER BY ProducerConsolidatedName" 
CancelSelectOnNullParameter="False">
</asp:SqlDataSource>
<asp:Button ID="cmdReset" runat="server" onclick="cmdReset_Click" 
Text="Reset" />
<br />
<br />
</div>
<br />
<asp:Button ID="cmdRelinkTo" runat="server" Text="Relink" 
onclick="cmdRelinkTo_Click" />
<asp:Button ID="cmdUnlink" runat="server" Text="Unlink" 
onclick="cmdUnlink_Click" />
<asp:Label ID="lblRelinkToConsolidatedProducer" runat="server" 
Text="Relink To:" Visible="False"></asp:Label>
<asp:DropDownList ID="cboRelinkToConsolidatedProducer" runat="server" 
AutoPostBack="True" DataSourceID="ConsolidatedProducer" 
DataTextField="ProducerConsolidatedName" 
DataValueField="ProducerConsolidatedID" Height="22px" 
onselectedindexchanged="cboRelinkToConsolidatedProducer_SelectedIndexChanged" 
Visible="False" Width="259px">
</asp:DropDownList>
<br />
<asp:Button ID="cmdRelink" runat="server" onclick="cmdRelink_Click" 
Text="Relink" Visible="False" />
<asp:TextBox ID="txtRelinkToConsolidatedProducerID" runat="server" 
Visible="False"></asp:TextBox>
<asp:TextBox ID="txtRelinkToConsolidatedProducerName" runat="server" 
Visible="False"></asp:TextBox>
<br />
<asp:Button ID="cmdUncheckAll" runat="server" onclick="cmdUncheckAll_Click" 
Text="Clear" Height="26px" Width="54px" />
<asp:Button ID="cmdRefresh" runat="server" onclick="cmdRefresh_Click" 
Text="Refresh" />
<br />
<br />
<asp:Label ID="lblRecordsFound" runat="server" style="color: #000000" Text="-"></asp:Label>
<br />
<br />
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
AllowSorting="True" AutoGenerateColumns="False" 
DataSourceID="MasterDetail"
onrowupdating="GridView1_RowUpdating"
Width="1243px" EmptyDataText="-"
DataKeyNames="MasterID">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="MasterID" 
DataNavigateUrlFormatString="ProducerDetail.aspx?masterid={0}" Text="View" />
<asp:TemplateField HeaderText="Update" SortExpression="Update">
<EditItemTemplate>
<asp:CheckBox ID="Update" runat="server" Checked='<%# Bind("Update") %>' 
AutoPostBack='<%# Bind("Update") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkUpdate" runat="server" Checked='<%# Bind("Update") %>' 
AutoPostBack='<%# Bind("Update") %>' />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:BoundField DataField="MasterID" HeaderText="ID" 
InsertVisible="False" ReadOnly="True" SortExpression="MasterID" />
<asp:BoundField DataField="SystemSourceCode" HeaderText="System" 
ReadOnly="True" SortExpression="SystemSourceCode" />
<asp:BoundField DataField="BusinessSourceCode" HeaderText="Source" 
ReadOnly="True" SortExpression="BusinessSourceCode" />
<asp:BoundField DataField="PRODUCERNAME" HeaderText="Producer Name" 
ReadOnly="True" SortExpression="PRODUCERNAME" >
<ControlStyle Width="100px" />
</asp:BoundField>
<asp:BoundField DataField="GWP" 
HeaderText="GWP" SortExpression="GWP" DataFormatString="{0:c}" 
ReadOnly="True" ApplyFormatInEditMode="True" />
<asp:BoundField DataField="PRODUCERMASTERID" HeaderText="Producer Master ID" 
ReadOnly="True" SortExpression="PRODUCERMASTERID" >
<ControlStyle Width="100px" />
</asp:BoundField>
<asp:TemplateField HeaderText="Consol. ID" 
SortExpression="PRODUCERCONSOLIDATEDID">
<EditItemTemplate>
<asp:TextBox ID="txtConsolidatedProducerID" runat="server" 
Text='<%# Bind("PRODUCERCONSOLIDATEDID") %>' AutoPostBack="True" CausesValidation="True"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="ConsolidatedProducerID" runat="server" 
Text='<%# Bind("PRODUCERCONSOLIDATEDID") %>' AutoPostBack="True" CausesValidation="True"></asp:TextBox>
</ItemTemplate>
<ControlStyle Width="100px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Consol. Name" 
SortExpression="PRODUCERCONSOLIDATEDID">
<EditItemTemplate>
<asp:TextBox ID="txtConsolidatedProducerName" runat="server" 
Text='<%# Bind("ProducerConsolidatedName") %>' AutoPostBack="True" CausesValidation="True"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="ConsolidatedProducerName" runat="server" 
Text='<%# Bind("ProducerConsolidatedName") %>' AutoPostBack="True" CausesValidation="True"></asp:TextBox>
</ItemTemplate>
<ControlStyle Width="100px" />
</asp:TemplateField>
<asp:BoundField DataField="PRODUCERNATIONALCODE" 
HeaderText="Source Code" 
SortExpression="PRODUCERNATIONALCODE" ReadOnly="True" />
<asp:BoundField DataField="FINMISNATIONALCODE" HeaderText="FINMIS Code" 
ReadOnly="True" SortExpression="FINMISNATIONALCODE" />
</Columns>
</asp:GridView>
<asp:Label ID="lblUpdatedRecords" runat="server" EnableViewState="False"></asp:Label>
<br />
<br />
</form>

Toutes les autres fonctions de travail - c'est la seule question en suspens. De toute orientation est apprécié.

DanRomano avez-vous redoublé par le code..? sera également envelopper un try{} catch{} autour de votre cmd.ExecuteNonQuery(); est le problème que vous rencontrez entouré de tout le code que vous avez posté ici..? si pas de raccourcir le code et après seulement pertinents du code qui concerne le problème que vous rencontrez
lorsque vous exécutez le programme, ce sont les valeurs de l'affichage dans le datagridview? si oui, alors on dirait que vous ne lient pas correctement.. avez-vous essayé d'appeler le GridView1.DataBind(); sur un autre événement?
Merci pour la réponse rapide.J'ai changé ma commande de mise à jour, pas de changements.
J'ai également renforcé par le code. Pas de problèmes si c'est ce que vous avez voulu dire. Je vais essayer de try{} catch{} écharpe mais ça pourrait être un problème de navigateur?

OriginalL'auteur Dan Romano | 2013-03-07