带有 2 个参数的 ASP.NET Gridview 超链接不起作用

问题描述 投票:0回答:1

我有一个

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 字符

c# asp.net gridview hyperlink
1个回答
0
投票

您可以使用多种方法。

您当然可以有一个标准的按钮单击事件,然后使用服务器端代码基于该行创建 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>
© www.soinside.com 2019 - 2024. All rights reserved.