gpt4 book ai didi

c# - 更新后刷新 GridView

转载 作者:太空狗 更新时间:2023-10-30 01:06:31 24 4
gpt4 key购买 nike

基本上,GridView 在更新事件发生后不显示更新的值。我搜索了论坛并看到了很多解决方案,但是当我尝试它们时没有任何效果。

数据库确实已更新,但更新仅在我重新启动项目后可见。

我做了什么:

  • 非常自由地使用 GridView1.Databind();
  • 保守使用 GridView1.Databind();
  • Page_Load 包含带有 GridView1.Databind() 的 (!IsPostBack) 包装器;
  • 放置GridView1.Databind();在 GridView1_RowUpdating 事件中。
  • ...以及我在搜索论坛后尝试的其他一些方法。

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();
}

标记:

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

所有其他功能都有效 - 这是唯一 Unresolved 问题。任何指导表示赞赏。

最佳答案

您在 SqlDataSource 上使用缓存,这就是它在您的 DataBind 上向您显示初始选择结果的原因。

来自您的标记:

<asp:SqlDataSource ID="MasterDetail" ... EnableCaching="True"

尝试对您的显式刷新按钮进行以下更新:

protected void cmdRefresh_Click(object sender, EventArgs e)
{
MasterDetail.EnableCaching = false;
GridView1.DataBind();
MasterDetail.EnableCaching = true;
}

关于c# - 更新后刷新 GridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com