嘿,我在这里有这段代码:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton CommandArgument='<%#Eval("id") & "|" & Eval("theName")%>' runat="server" Text='<%#Eval("status")%>' CommandName='<%#Eval("status")%>' ID="statusLink" />
</ItemTemplate>
</asp:TemplateField>
如果它表示“状态”,它将被“拒绝”,“待定”或“批准”。问题是,如果已批准但已拒绝和已批准的链接不同,我怎么能没有链接?
我目前以这种方式检查点击次数:
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链接按钮。但是你如何将它们插入到页面上的正确位置?
答案 0 :(得分: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>