我一直在尝试在gridview中制作超链接,但我似乎无法工作。主要问题是只需单击超链接即可无。绝对没有任何意义。我的超链接的原因是,当我的gridview中显示记录时,超链接将允许用户重定向到我的编辑页面以编辑所选记录。我的gridview从ObjectDataSource
获取数据,然后调用我的数据库中的存储过程来执行查询字符串。 TxnID
是查询字符串中涉及的众多列之一。
超链接的代码:
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:HyperLink ID="hlEditTxn" NavigateUrl='<% Eval("TxnID", "~/FXTxnEdit.aspx?TxnID={0}") %>'
Text="Edit" runat="server" ></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
编辑页面的代码:
public partial class FXTxnEdit : System.Web.UI.Page
{
TransactionHandler txnHnd = null;
MainFunctions mf = null;
int TransactionID = 0;
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
string id = Request.QueryString["TxnID"] as string;
if (id == null)
{
Response.Redirect("Default.aspx");
}
出于某种原因,这不起作用。我尝试在gridview中插入一个显示TxnID的Label
列,以确保ObjectDataSource是否确实获得了TxnID:
<asp:TemplateField HeaderText="TxnID">
<ItemTemplate>
<asp:Label ID="lblTxnID" runat="server" Text='<%# Eval("TxnID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
它确实获得了TxnID,它确实在gridview中显示了TxnID,这很好。
关于什么可能出错的任何想法?或者还需要做些什么或者可以做些什么来使超链接工作?
答案 0 :(得分:1)
将链接声明和绑定表达式更改为以下内容:
<asp:HyperLink ID="hlEditTxn" NavigateUrl='<%# "~/FXTxnEdit.aspx?TxnID=" + Eval("TxnID") %>'
Text="Edit" runat="server" ></asp:HyperLink>
试一试,让我知道它发生了
利奥
答案 1 :(得分:1)
哇。设法解决了我的非常大的问题,经过超过5个小时XD
如果您仔细查看我的问题中的超链接声明:
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:HyperLink ID="hlEditTxn" NavigateUrl='<% Eval("TxnID", "~/FXTxnEdit.aspx?TxnID={0}") %>'
Text="Edit" runat="server" ></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
您会在#
之前看到没有数字符号/哈希(Eval
)。我完全错过了那个。一旦我将这个微不足道的角色添加到我的代码......
NavigateUrl='<%# Eval("TxnID", "~/FXTxnEdit.aspx?TxnID={0}") %>'
现在一切都有效。编码是一种蜜蜂otch。有时可以让你看起来非常愚蠢LOL
P.S。 @Leo - 你的解决方案是BTW,我试过了。
方面问题,#
是什么?这是什么意思?
答案 2 :(得分:0)
你为什么不试试这个
<asp:HyperLink ID="hlEditTxn" NavigateUrl='<%# string.Format("~/FXTxnEdit.aspx?TxnID={0}",Eval("TxnID"))%>'
Text="Edit" runat="server" ></asp:HyperLink>