我正在尝试在点击asp:net按钮时自动更新我的gridview。我的gridview包含等待管理员验证的帐户。 gridview包含一个选择链接按钮。当管理员选择链接按钮并单击asp:net按钮时,假设自动将“待定”更新为“已批准”。然后,它将刷新gridview并自动删除已批准的待处理帐户。
我使用了这个方法response.redirect方法
Response.Redirect("AdminVerify.aspx");
但它会立即刷新我的整个页面而忽略了我的ajax scriptmanager
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
我已添加。使用脚本管理器,我认为不应该刷新整个页面。因此,我想知道如何让按钮在点击3秒后自动更新gridview。 我试图输入这个HTML代码,但它会每隔5秒自动刷新一次页面,即使我没有点击任何内容
<meta http-equiv="refresh" content="5" >
源代码:
<%@ Page Title="" Language="C#" MasterPageFile="~/Admin.Master" AutoEventWireup="true" CodeBehind="AdminVerify.aspx.cs" Inherits="AdminWebApp.AdminVerify" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<p>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
Unverified Officer's Account Information<br />
<asp:GridView ID="GVVerify" runat="server" BackColor="#CCCCCC" BorderColor="#999999" Width="100%" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black" OnSelectedIndexChanged="GVVerify_SelectedIndexChanged" AutoGenerateSelectButton="True">
<FooterStyle BackColor="#CCCCCC" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" />
<RowStyle BackColor="White" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#808080" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#383838" />
</asp:GridView>
Officer ID :
<asp:Label ID="lblOID" runat="server"></asp:Label>
will be verify upon activation<br />
<br />
<asp:Label ID="lblMsg" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="btnVerify" runat="server" OnClick="btnVerify_Click" Text="Verify" />
<asp:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server"
TargetControlID="btnVerify"
ConfirmText="Are you sure you would like to verify this police officer?"
OnClientCancel="CancelClick" />
</ContentTemplate>
</asp:UpdatePanel>
</p>
</asp:Content>
后端代码:
public partial class AdminVerify : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source =localhost;" +
"Initial Catalog = project; Integrated Security = SSPI";
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("SELECT policeid, password, email, nric, fullname, contact, address, location From LoginRegisterPolice where pending='pending'", conn);
da.Fill(ds);
GVVerify.DataSource = ds;
GVVerify.DataBind();
conn.Close();
}
}
protected void GVVerify_SelectedIndexChanged(object sender, EventArgs e)
{
lblOID.Text = GVVerify.SelectedRow.Cells[1].Text;
}
protected void btnVerify_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=project; Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("Update LoginRegisterPolice set pending='approved' where policeid='"+lblOID.Text+"'", con);
cmd.ExecuteNonQuery();
lblMsg.Text = "The following officer has been verified.";
Response.Redirect("AdminVerify.aspx");
}
}
}
答案 0 :(得分:1)
您可以使用单独的方法加载gridview数据。在第一次加载页面时,您可以调用此方法,也可以在对数据进行更改后通过调用此方法重新加载网格。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadGrid();
}
}
private void LoadGrid()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source =localhost;" +
"Initial Catalog = project; Integrated Security = SSPI";
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("SELECT policeid, password, email, nric, fullname, contact, address, location From LoginRegisterPolice where pending='pending'", conn);
da.Fill(ds);
GVVerify.DataSource = ds;
GVVerify.DataBind();
conn.Close();
}
protected void btnVerify_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=localhost; Initial Catalog=project; Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("Update LoginRegisterPolice set pending='approved' where policeid='" + lblOID.Text + "'", con);
cmd.ExecuteNonQuery();
lblMsg.Text = "The following officer has been verified.";
LoadGrid();
}
答案 1 :(得分:0)
据我所知,GridViewID.DataBind()
将更新服务器上的网格,但它不会反映浏览器(客户端)的更改。要在不调用Page_Load
的情况下反映更改,只需将网格包裹在UpdatePanel
之内,然后将其模式更改为Conditional
。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="GVVerify" runat="server">
....
....
....
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
然后,无论您将数据绑定到网格,只需在其后添加UpdatePanel1.Update()
。
<强> C#强>
....
....
GVVerify.DataSource = ds;
GVVerify.DataBind();
UpdatePanel1.Update(); //this will reflect the changes on client-side