我想知道当用户更新或删除其他网页中的项目时是否可以刷新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。
祝你好运
答案 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();