我需要一个PopUp中gridview的项目细节。当我点击gridview上的详细信息时,我会从行中获取项目。
这是我网格的一部分:
<asp:GridView ID="gvwProdProv" runat="server" CssClass="mGrid"
AutoGenerateColumns="false" PagerStyle-CssClass="pgr"
AlternatingRowStyle-CssClass="alt" Font-Size="Smaller" >
<Columns>
<asp:TemplateField HeaderText="CLIENTE">
<ItemTemplate>
<asp:Label ID = "lblSAC_CliCod" runat="server" Text='<%# Eval("cliente_Codigo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="COD. CAJA">
<ItemTemplate>
<asp:Label ID = "lblSAC_CajCod" runat="server" Text='<%# Eval("caja_Codigo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="NUM">
...
...
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="lnkView" Text="Detalle" NavigateUrl="javascript:;" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我正在使用此脚本将值发送到其他网络表单:
<script type="text/javascript">
$(function () {
$("[id*=lnkView]").click(function () {
var rowIndex = $(this).closest("tr")[0].rowIndex;
window.open("Detalle.aspx?rowIndex=" + rowIndex, "Popup", "width=700,height=200");
});
});
</script>
详细信息显示在webform详细信息中,这里有脚本:
<script type="text/javascript">
$(function () {
if (window.opener != null && !window.opener.closed) {
var rowIndex = window.location.href.split("?")[1].split("=")[1];
var parent = $(window.opener.document).contents();
var row = parent.find("[id*=gvwProdProv]").find("tr").eq(rowIndex);
$("#cliente_codigo").html(row.find("td").eq(0).html());
$("#caja_codigo").html(row.find("td").eq(1).html());
$("#caja_numero").html(row.find("td").eq(2).html());
}
});
</script>
我可以获得所选的值:
<div>
<u>Details</u>
<br />
<br />
<b>Cliente:</b> <span id="cliente_codigo"></span>
<br />
<b>Codigo Caja:</b> <span id="caja_codigo"></span>
<br />
<b>Numero Caja:</b> <span id="caja_numero"></span>
</div>
问题是我无法在变量中获取此值以便在存储过程中执行,以便在gridview详细信息中显示详细信息。
我怎样才能得到它们?
答案 0 :(得分:0)
根据您的评论,您似乎更像是一个传统的应用程序。但是,Web应用程序将在无状态流程下蓬勃发展。这是Web-Forms的主要缺点,它将状态指定为无状态的东西。
我不完全确定您的应用程序目标......但是,我假设可以通过以下方法轻松获得二级表单:
$('.Grid-Button').click(function () {
// Logic to obtain value on Grid
window.open("Detail.aspx?index=1");
});
JavaScript会被调整,但在PageLoad
内的新页面上,您只需执行以下操作:
var index = Request.QueryString["Index"];
这将提供string
1
的值。所以在这一点上你可以使用你想要的数据,但听起来你的结构更像是:
public void PageLoad(object sender, EventArgs e)
{
var index = Request.QueryString["Index"];
if(!string.IsNullOrEmpty)
{
// Open database to build detail about Product.
}
}
我相信你就是你所追求的。最终,您可能希望使用单页,Web服务或甚至将当前方法转换为Ajax。这样你没有弹出窗口,因为有些人有弹出窗口拦截器,对大多数用户来说也很烦人。
希望这有帮助。
答案 1 :(得分:0)
谢谢Greg, 你是对的,发送值并不复杂,但是我发送它们的方式并且我想要检索它们并不是最好的。 无论如何,我发送它们与我的gridview中的超链接如下:
> <asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="lnkView" Text="Detalle" runat="server"
NavigateUrl='<%# "Detalle.aspx?cliCod=" + Eval("cliente_Codigo").ToString()
+ "&cajCod=" + Eval("caja_Codigo").ToString()
+ "&cajNum=" + Eval("caja_Numero")
%>'/>
</ItemTemplate>
</asp:TemplateField>
我找回它们:
> string clienteCodigo = Request.QueryString["cliCod"];
string cajaCodigo = Request.QueryString["cajCod"];
string cajaNumero = Request.QueryString["cajNum"];