通过popup

时间:2015-12-11 18:13:48

标签: javascript c# gridview

我需要一个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详细信息中显示详细信息。

我怎样才能得到它们?

2 个答案:

答案 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"];