GridView中的链接(a)有问题

本文关键字:有问题 链接 GridView | 更新日期: 2023-09-27 18:00:28

我的网格视图中有一个(a),它不编译:

  <asp:GridView ID="gvProjects" runat="server" OnSorting="gvProjects_Sorting"
            AutoGenerateColumns="False" CssClass="table table-hover table-striped"
            GridLines="None">
            <Columns>
                <asp:TemplateField HeaderText="Title" SortExpression="ProjectTitle">
                    <ItemTemplate>
                           <a href="#myModal" id="remove_emp_btn" onclick="go('projectFrame','ProjectViewFrame.aspx?id=<%# Eval("ProjectID") %>')" 
                               runat="server" data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>
                    </ItemTemplate>
                </asp:TemplateField>

我是被迫使用asp控件还是代码有问题?

感谢

它说服务器标签格式不正确。

问题似乎是:

 onclick="go('projectFrame','ProjectViewFrame.aspx?id=<%# Eval("ProjectID") %>')" 

GridView中的链接(a)有问题

您应该将onclick属性的所有内容包装在服务器标记<%# %>中,并且可以删除属性runat="server"。此外,必须转义双引号字符:

<asp:GridView ID="gvProjects" runat="server" OnSorting="gvProjects_Sorting"
AutoGenerateColumns="False" CssClass="table table-hover table-striped"
GridLines="None">
<Columns>
    <asp:TemplateField HeaderText="Title" SortExpression="ProjectTitle">
        <ItemTemplate>
           <a href="#myModal" id="A1" onclick='<%# "go('"projectFrame'", '"ProjectViewFrame.aspx?id=" + Eval("ProjectID").ToString() + "'" )" %>'
                    data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>
        </ItemTemplate>
    </asp:TemplateField>

备选方案:

使用Eval方法的第二个参数来格式化字符串可以使标记更易于读取。

   <a href="#myModal" id="remove_emp_btn" onclick='<%# Eval("ProjectID", "go('"projectFrame'", '"ProjectViewFrame.aspx?id={0}'")") %>'
                data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>

我从来没有把eval放在文本中间。我经常采用这种方式渲染:

"<%= "go('projectFrame','ProjectViewFrame.aspx?id=" + (string)Eval("ProjectID") %>"

使用<%#%>语法并删除runat=server:

 <a href="#myModal" id="remove_emp_btn"  OnSorting="gvProjects_Sorting"
                           onclick='<%# "go('projectFrame','ProjectViewFrame.aspx?id=" + Eval("ProjectID").ToString() + ")" %>'
                               data-toggle="modal">'<%# Eval("ProjectTitle") %>'</a>