我想将在GridView中单击的会话项从一个页面传递或存储到另一个页面,并将相同的参数传递给我的存储过程以获取特定字段的数据。
我创建了一个网格视图,其中的数据来自存储过程。 GridView字段之一是LinkButton。因此,在单击链接按钮时,它应该在新选项卡中显示申请人的所有详细信息。页面正在重定向,但我无法存储或传递代码中提到的“ 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;
}
}
我们需要根据从LinkButton传递的参数显示应用程序详细信息。 传递的此参数将再次在StoredProcedure中用于绑定ApplicantDetails页面中的另一个网格。谢谢
答案 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
}