有什么方法可以在重定向时将LinkBut​​ton内容从一个传递到另一个?

时间:2019-01-31 08:09:51

标签: c# asp.net

我想将在GridView中单击的会话项从一个页面传递或存储到另一个页面,并将相同的参数传递给我的存储过程以获取特定字段的数据。

我创建了一个网格视图,其中的数据来自存储过程。 GridView字段之一是LinkBut​​ton。因此,在单击链接按钮时,它应该在新选项卡中显示申请人的所有详细信息。页面正在重定向,但我无法存储或传递代码中提到的“ APPL_REF_NO”特定字段。

ASP代码

<asp:GridView ID="gvServiceApplication" runat="server" AutoGenerateColumns="false" EmptyDataText="No Data Found"
    Width="100%" HeaderStyle-BackColor="#facf5a"
    HeaderStyle-ForeColor="Black" RowStyle-BackColor="White"
    RowStyle-ForeColor="Black">
    <Columns>
        <asp:TemplateField HeaderText="ApplicationNo">
            <ItemTemplate>
                <asp:LinkButton ID="lblApplicationNo" runat="server" Text='<%#Eval("APPL_REF_NO") %>' OnClick="btnApplicantDetails_Click"></asp:LinkButton>
            </ItemTemplate>
         </asp:TemplateField>


protected void btnApplicantDetails_Click(object sender, EventArgs e)
{
     Page.ClientScript.RegisterStartupScript(
          this.GetType(), "OpenWindow", "window.open
          ('ApplicantDetails.aspx','_blank');", true);
}


private void ApplicationDetailBind()
{
    try
    {
    DataTable dtApplicationDetail = new DataTable();
    dtApplicationDetail = objDepartmentWiseBA.getApplicantDetails(applicationnumber).Tables[0];
    gvApplicationIndetail.DataSource = dtApplicationDetail;
    gvApplicationIndetail.DataBind();
    }
    catch (Exception)
    {
         throw;
    }
}

我们需要根据从LinkBut​​ton传递的参数显示应用程序详细信息。 传递的此参数将再次在StoredProcedure中用于绑定ApplicantDetails页面中的另一个网格。谢谢

4 个答案:

答案 0 :(得分:0)

在链接按钮单击事件中使用以下行代替第二行。

方法是将所需的值作为查询字符串参数传递给ApplicationDetails.aspx页。然后,使用第二个代码片段即可轻松获得查询字符串参数。

链接按钮单击事件中的第二行

this.GetType(), "OpenWindow", 
 String.Format("window.open('ApplicantDetails.aspx?applRefNo={0}','_blank');", (sender as LinkButton).Text ), true);

然后,在目标页面中,您可以使用以下C#代码获取APPL_REF_NO的值。

获取目标页面中的值

var applRefNoValue =  Request.QueryString["applRefNo"];

答案 1 :(得分:0)

建议不要将值存储在会话变量中,而应将其作为请求参数传输到打开的页面。因此,您必须扩展使用该行的refNo调用的URL:

protected void btnApplicantDetails_Click(object sender, EventArgs e)
{
  var refNo = ((LinkButton)sender).Text;
  Page.ClientScript.RegisterStartupScript(
    this.GetType(), "OpenWindow", "window.open('ApplicantDetails.aspx?ref_no=" + refNo + "','_blank');", true);
}

此方法不使用会话状态,如果用户单击多个页面,可能会导致某些难以跟踪的错误。每个打开的详细信息页面都会收到匹配的参考号。

在详细信息页面中,可以使用Request对象读取参数并获取相应的数据:

var refNo = Request["refNo"];
// ...

答案 2 :(得分:0)

使用带有命令参数的onCommand事件,在页面中检查以下代码

<asp:LinkButton ID="lblApplicationNo" runat="server"
    Text='<%#Eval("APPL_REF_NO") %>'
    OnCommand="btnApplicantDetails_Command" CommandName="ApplicantDetails"
    CommandArgument='<%#Eval("APPL_REF_NO") %>'></asp:LinkButton>

以及代码中的以下内容

protected void btnApplicantDetails_Command(object sender, CommandEventArgs e)
{
    string appNo = e.CommandArgument.ToString();
    // do work ...
}

答案 3 :(得分:0)

    Write as below
     <Columns>
            <asp:TemplateField HeaderText="ApplicationNo">
                <ItemTemplate>
                    <asp:LinkButton ID="lblApplicationNo" runat="server" 
       data-applRefNo='<%#Eval("APPL_REF_NO") %>' Text = "Application Details" OnClick="btnApplicantDetails_Click"></asp:LinkButton>
                </ItemTemplate>
             </asp:TemplateField>
    </columns>

   protected void btnApplicantDetails_Click(object sender, EventArgs e)
   {
      string applRefno = btnApplicantDetails.attr("data-applRefNo");
        your coding here
   }