【问题标题】:Create on click hyperlink event in gridview在gridview中创建点击超链接事件
【发布时间】:2016-06-25 21:55:10
【问题描述】:

我有一个gridview,在一列中编辑和删除超链接。我的问题是如何在我的代码隐藏中生成一个方法,以便当我单击超链接时,它会调用该方法?现在它把我带到页面,但我希望能够在加载页面之前修改日期。例如,当我在设计模式下单击按钮控件时,它会生成方法。在这种情况下,我该如何为超链接做类似的事情?

这是我所拥有的:

              <asp:TemplateField>
                    <ItemTemplate>
                        <asp:HyperLink ID="EditLink" runat="server" 
                        NavigateUrl="~/EditCustomer.aspx" 
                        Text='Edit'>
                        </asp:HyperLink>
                        <asp:HyperLink ID="DeleteLink2" runat="server" 
                        NavigateUrl="~/DeleteCustomer.aspx" 
                        Text='Delete'>
                        </asp:HyperLink>
                    </ItemTemplate>
                </asp:TemplateField>

编辑 必须是超链接

【问题讨论】:

    标签: asp.net vb.net gridview hyperlink


    【解决方案1】:

    您可以使用按钮字段和 gridview 事件 RowCommand

    <asp:ButtonField CommandName="Preview" Text="link1" ButtonType="Link" />  
    

    或模板字段和gridview事件RowCommand

    <asp:TemplateField>
       <ItemTemplate>
          <asp:LinkButton ID="lbtnAccept" runat="server" CommandName="Preview"></asp:LinkButton>
       </ItemTemplate>
    </asp:TemplateField>
    

    以及 RowCommand 中的代码

    if (e.CommandName == "Preview")
    {
       int index = Convert.ToInt32(e.CommandArgument);
       GridViewRow row = grvAcceptRejectRootCause.Rows[index];
       string lblAction = ((Label)row.FindControl("lblAction ")).Text;
       string txtRootCause = ((TextBox)row.FindControl("txtRootCause")).Text;    
    }
    

    【讨论】:

    • 显然链接按钮使用了额外的服务器请求。出于这个原因,我试图弄清楚如何使用您在上面列出的类似功能c,除了超链接。
    【解决方案2】:

    我假设您要执行的代码隐藏在目标页面上。如果是一些初始化代码,它依赖于 GridView 中的值,您可以将其作为参数附加到 URL。例如,如果 GridView 有一个“LastDate”字段:

    <asp:TemplateField>
        <ItemTemplate>
            <asp:HyperLink ID="EditLink" runat="server" Text="Edit"
                NavigateUrl='<%# "~/EditCustomer.aspx?Date=" & Databinder.Eval(Container.DataItem,"LastDate") %>' />
            ...
        </ItemTemplate>
    </asp:TemplateField>
    

    然后您可以在目标页面中检索参数并在显示之前将其用于初始化页面:

    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            If Not IsNothing(Request.QueryString("Date")) Then
                InitPageWithDate(CDate(Request.QueryString("Date")))
                ...
            End If
        ...
    End Sub
    

    【讨论】:

    • 这听起来正是我想要的。等我回去工作我会试一试。
    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多