gridview中的超链接无法正常工作

时间:2013-12-13 08:27:30

标签: c# asp.net sql gridview hyperlink

我一直在尝试在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,这很好。

关于什么可能出错的任何想法?或者还需要做些什么或者可以做些什么来使超链接工作?

3 个答案:

答案 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>