Aktualisieren GridView nach update

Grundsätzlich das GridView-Steuerelement zeigt nicht die aktualisierten Werte nach dem update-Ereignis Auftritt. Ich habe das forum durchsucht und gesehen, viele Lösungen, aber nichts hat funktioniert, wenn ich versuchte, Sie aus.

Die Datenbank ist definitiv aktualisiert, aber die updates sind nur sichtbar, wenn ich starten Sie das Projekt neu.

Was ich getan habe:

  • Sehr liberale Verwendung von GridView1.Databind();
  • Konservative Verwendung von GridView1.Databind();
  • Page_Load enthält (!IsPostBack) - wrapper mit GridView1.Databind();
  • Platziert GridView1.Databind(); in der GridView1_RowUpdating Veranstaltung.
  • ...und viele andere Dinge, die ich habe versucht, nach der Suche im 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();
}

}

Markup:

<%@ 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>

Alle anderen Funktionen arbeiten - das ist die einzige offene Frage. Jede Beratung wird geschätzt.

DanRomano haben Sie ging durch den code..? auch wickeln Sie ein try{} catch{} um Ihre cmd.ExecuteNonQuery(); ist das Problem, du bist umgeben, um alle den code, den Sie hier gepostet haben..? wenn nicht, verkürzen Sie den code und poste nur den relevanten code, die sich auf das Problem, dass Sie mit
beim ersten ausführen des Programms, sind die Werte der Anzeige im datagridview? wenn ja, dann klingt Sie nicht bindend sind richtig.. habe Sie versucht, den Aufruf der GridView1.DataBind(); auf einer anderen Veranstaltung?
Danke für die schnelle Antwort.Ich habe mich verändert, meine update-Befehl, keine änderungen.
Ich habe auch trat durch den code. Keine Probleme, wenn das, was du meintest. Ich werde versuchen, try{} catch{} wrap aber könnte es sein, ein browser-Problem?

InformationsquelleAutor Dan Romano | 2013-03-07

Schreibe einen Kommentar