otro - actualizar registros datagridview c#
Actualiza GridView despuĆ©s de la actualizaciĆ³n (3)
Lo obtuve de una publicación, aunque no especifica nada más. Probar esto.
protected void GridView1_Init(object sender, EventArgs e)
{
Response.CacheControl = "no-cache";
}
Nota: no es necesario hacer nada en el marcado.
Básicamente, GridView no muestra los valores actualizados después de que se produce el evento de actualización. He buscado en el foro y he visto muchas soluciones, pero nada funcionó cuando las probé.
La base de datos se actualiza definitivamente, pero las actualizaciones solo son visibles una vez que reinicio el proyecto.
Que he hecho:
- Uso muy liberal de GridView1.Databind ();
- Uso conservador de GridView1.Databind ();
- Page_Load contiene el contenedor (! IsPostBack) con GridView1.Databind ();
- Colocado GridView1.Databind (); en el evento GridView1_RowUpdating.
- ... y una serie de otras cosas que probé después de buscar en el foro.
DO#:
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();
}
}
Margen:
<%@ 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>
<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>
Todas las otras funciones funcionan: este es el único problema pendiente. Cualquier orientación es apreciada.
Está utilizando el almacenamiento en caché en SqlDataSource
por lo que le muestra el resultado de Seleccionar inicial en su DataBind
.
De su marcado:
<asp:SqlDataSource ID="MasterDetail" ... EnableCaching="True"
Intente realizar la siguiente actualización a su botón de actualización explícita:
protected void cmdRefresh_Click(object sender, EventArgs e)
{
MasterDetail.EnableCaching = false;
GridView1.DataBind();
MasterDetail.EnableCaching = true;
}
No sé si es la mejor manera pero funciona bien después de la actualización. Después de hacer clic en el botón de actualización, volví a escribir SqlDataSource.SelectCommand
para seleccionar los datos que necesito. Mi código:
protected void teamSubmitBTN_Click(object sender, EventArgs e)
{
ExpScheduleClass ESCU = new ExpScheduleClass();
ESCU.updateTeamTable(teamLBL.Text, courseLBL.Text, studentLBL.Text);
SqlDataSource1.SelectCommand = //your select cmd here...
}