我有一个
asp.net gridview
,我想要 VIEW
选项。基于 SAPID
和 CandidateID
,它应该重定向到相应的页面。但是在传递这两个参数时,我无法使用查询字符串进行重定向。请帮忙。
下面是代码。
<asp:GridView ID="grdVSATDetail" runat="server" AutoGenerateColumns="false" CssClass="dashboard" Width="100%" ShowHeaderWhenEmpty="true">
<Columns>
<asp:BoundField DataField="STATE" HeaderText="R4G State" ItemStyle-Width="9%" />
<asp:BoundField DataField="SAP_ID" HeaderText="SAP-ID" ItemStyle-Width="10%" />
<asp:BoundField DataField="CANDIDATE_ID" HeaderText="Candidate Id" ItemStyle-Width="9%" />
<asp:BoundField DataField="SITE_NAME" HeaderText="Site Name" ItemStyle-Width="15%" />
<asp:BoundField DataField="STATUS_NAME" HeaderText="Status" ItemStyle-Width="9%" />
<asp:BoundField DataField="SITE_TYPE" HeaderText="Site Type" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
<asp:BoundField DataField="CANDIDATESTATUS" HeaderText="Candidate Status" ItemStyle-Width="8%" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
<asp:BoundField DataField="SITEID" HeaderText="Site Id" ItemStyle-Width="8%" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
<asp:BoundField DataField="PRIORITYSITE" HeaderText="Priority Site" ItemStyle-Width="9%" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
<asp:BoundField DataField="LATITUDE" HeaderText="Latitude" ItemStyle-Width="8%" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
<asp:BoundField DataField="LONGITUDE" HeaderText="Longitude" ItemStyle-Width="8%" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" />
<asp:TemplateField HeaderText="Edit" ItemStyle-Width="6%">
<ItemTemplate>
<asp:ImageButton ID="btnView" OnClick="btnView_Click" Width="15" runat="server" ToolTip="Edit Work Item" ImageUrl="~/Images/pencil.png" Enabled='<%# Eval("STATUS_NAME").ToString()=="VSAT form filled" || Eval("STATUS_NAME").ToString()=="Pending for Approval"?false:true %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="View" ItemStyle-Width="5%">
<ItemTemplate>
<asp:HyperLink ID="btnDisplay" Width="45" Text="View" runat="server" ToolTip="View VSAT Info" NavigateUrl="~/Sitesurvey.aspx?SapId={0}&CandidateId={1}"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>No records found !</EmptyDataTemplate>
</asp:GridView>
更新
出现错误
输入不是有效的 Base-64 字符串,因为它包含非 Base-64 字符
您可以使用多种方法。
您当然可以有一个标准的按钮单击事件,然后使用服务器端代码基于该行创建 URL,并以这种方式导航。
因此,只需使用标准按钮和标准按钮单击事件来代替超链接。
因此:
protected void cmdView_Click(object sender, EventArgs e)
{
Button cmdView = (Button)sender;
GridViewRow gRow = (GridViewRow)cmdView.NamingContainer;
string sURL =
$@"~/ViewProjects/Project?SAPIP={gRow.Cells[1].Text}&CandidateID={gRow.Cells[2].Text}";
Response.Redirect(sURL);
}
如上所述,您可以直接在标记中形成超链接,而无需单击按钮,因此说这也应该有效:
<asp:TemplateField>
<ItemTemplate>
<a href="./ViewProjects/Project?SAPIP=<%#Eval("SAP_ID")%>&CandidateID=<%# Eval("Candidate") %>" />
</ItemTemplate>
</asp:TemplateField>