可以从另一个页面刷新Gridview吗?

时间:2017-06-27 22:23:59

标签: c# asp.net gridview

我想知道当用户更新或删除其他网页中的项目时是否可以刷新gridview。 这是我们的网格视图之一:

<asp:GridView ID="gvw_CliEmp_EmpDataNo" runat="server" AutoGenerateColumns="false"
        CssClass="mGrid" PagerStyle-CssClass="pgr" Width="50%"  
        AlternatingRowStyle-CssClass="alt" Font-Size="Small"
        OnRowCommand="gvw_CliEmp_EmpDataNo_RowCommand">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <a href="#" onclick="window.open('Clientes_Empleados_DetalleNO.aspx?cliCod= <%#Eval("ClienteCodigo1").ToString() 
                        + "&EmpNom=" + Eval("Empleado1").ToString()
                        + "&EmpCod=" + Eval("IdCliEmp").ToString()
                        + "&EmpNiv=" + Eval("NivelAcceso1").ToString()    
                        %> ','PrintMe','height=500px,width=800px,scrollbars=1');">Editar</a>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="ID EMP">
                <ItemTemplate>
                    <asp:Label ID="lbl_CliEmp_EmpIdNo" runat="server" Text='<%# Eval("IdCliEmp") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="EMPLEADO">
                <ItemTemplate>
                    <asp:Label ID="lbl_CliEmp_EmpNomNo" runat="server" Text='<%# Eval("Empleado1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="CLIENTE">
                <ItemTemplate>
                    <asp:Label ID="lbl_CliEmp_CliCodNo" runat="server" Text='<%# Eval("ClienteCodigo1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="NIVEL">
                <ItemTemplate>
                    <asp:Label ID="lbl_CliEmp_EmpNivNo" runat="server" Text='<%# Eval("NivelAcceso1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:LinkButton ID="lnkdeleteNo" runat="server" CommandName="DeleteNo" 
                        CommandArgument='<%#Eval("IdCliEmp")%>'>Eliminar
                    </asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

如果用户点击编辑按钮出现另一个网页,如弹出但更简单,为此我将值发送到这个新的网络表单:

string empNombre, clienteCodigo, empCodigo, empNivel;


protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        empNombre = Request.QueryString["EmpNom"];
        clienteCodigo = Request.QueryString["cliCod"];
        empCodigo = Request.QueryString["EmpCod"];
        empNivel = Request.QueryString["EmpNiv"];

        lbl_CliEmpDet_CliNomNO.Text = empNombre;
        lbl_CliEmpDet_CliCodNO.Text = clienteCodigo.Replace(" ", "");
        lbl_CliEmpDet_EmpCodNO.Text = empCodigo.Replace(" ", "");
        lbl_CliEmpDet_CliNivNO.Text = empNivel.Replace(" ", "");

        clietnes_Empleados_Cons_DptosxCliente(); //departamentos por cliente

    }
}

bla bla blah ...我从第一页获取数据, 但是,当我更新或删除第二页的记录时,我希望第一页更新的gridview没有刷新。

这可能吗? 我希望有人能帮助我。

PD:我没有使用ajax。

祝你好运

2 个答案:

答案 0 :(得分:0)

是的,这是可能的!您可以在用户更新或删除时创建会话会话值填充一些“文本”,并在网页视图Web表单页面加载事件上,您可以检查会话值是'文本'然后刷新网格视图。

如果我的回答对您有帮助,请将其标记为正确。

答案 1 :(得分:0)

在GridView页面上,创建一个带有onclick事件的隐藏按钮,除了重新绑定GridView之外什么都不做。

<div style="display: none;">
    <asp:Button runat="server" ID="btnRefreshGrid" OnClick="btnRefreshGrid_Click"></button>
</div>

protected void btnRefreshGrid_Click(object sender, EventArgs e)
{
    gridView.Rebind();
}

在点击按钮的同一页面上创建一个JavaScript事件。

function refreshGrid(){
    document.getElementById("<%= btnRefreshGrid.ClientID %>").click();
}

然后,在弹出窗口中,只需使用parent关键字在JavaScriot中调用此函数。

//database changes made
parent.refreshGrid();