0

嘿,我在这里有这段代码:

<asp:TemplateField>
   <ItemTemplate>
       <asp:LinkButton CommandArgument='<%#Eval("id") & "|" & Eval("theName")%>' runat="server" Text='<%#Eval("status")%>' CommandName='<%#Eval("status")%>' ID="statusLink" />
   </ItemTemplate>
</asp:TemplateField>

在它说“状态”的地方,它可能是“拒绝”、“待定”或“批准”。问题是,如果它说APPROVED但对于REJECTEDAPPROVED有不同的链接,我怎么能没有链接?

我目前以这种方式检查点击次数:

Protected Sub grdView_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdView.RowCommand
    Dim command As String = e.CommandName.ToString
    Dim theName() As String = Split(e.CommandArgument.ToString, "|")
    Dim cid As String = theName(0)

    If cid.Length <= 0 Then Exit Sub

    Select Case command
        Case "PENDING"
            Response.Redirect("/account/Req.aspx?ID=" & cid & "&ACCEPT=yes&NAME=" & theName(1))
        Case "REJECTED"
            Response.Redirect("/account/Req.aspx?ID=" & cid & "&ACCEPT=no&NAME=" & theName(1))
    End Select
End Sub

所以如果一个记录是这样的:

 Bob | Barker | Bob@priceisright.com | PENDING (Approve | Reject)

然后,用户可以通过按下任一链接来选择批准或拒绝该人。

如果它已经被批准,那么它应该看起来像这样:

 Bob | Barker | Bob@priceisright.com | Approve!

...没有与任何东西联系在一起。

任何帮助都会很棒!

更新

也许更好的替代方法是动态创建 asp 链接按钮。但是您如何将它们插入页面上的正确位置?

4

1 回答 1

1

快速,非常快速的解决方法 - 但它不会在批准时不将链接显示为简单文本,是这样的:

<asp:TemplateField>
   <ItemTemplate>
       <asp:LinkButton 
     OnClientClick='<%#Eval("status")=="Approved"?"javascript:return false;":""%>'
    CommandArgument='<%#Eval("id") & "|" & Eval("theName")%>' runat="server" Text='<%#Eval("status")%>' CommandName='<%#Eval("status")%>' ID="statusLink" />
   </ItemTemplate>
</asp:TemplateField>

这样做是在通过从 Javascript 函数调用返回 false 来批准状态时禁用表单提交。否则,它会回发到服务器。

更新:

这是完整的解决方案,使“已批准”链接按钮仅显示文本;不发回或超链接:

<asp:TemplateField>
   <ItemTemplate>
       <asp:LinkButton 
     name='<%#Eval("status") %>'
    CommandArgument='<%#Eval("id") & "|" & Eval("theName")%>' runat="server" Text='<%#Eval("status")%>' CommandName='<%#Eval("status")%>' ID="statusLink" />
   </ItemTemplate>
</asp:TemplateField>

现在,您可以简单地调用 Window.load 上的 JS 函数来删除所有hrefs具有名称的元素Approved

<script>
    window.onload = function () {    
        //get elements with name Approved
        var aprovedLinks = document.getElementsByName("Approved");
        for (var i = 0; i < aprovedLinks.length; i++) {
            //remove the hyperlink
            aprovedLinks[i].removeAttribute("href", 0);
        }
    };
</script>
于 2012-08-24T21:16:19.497 回答