【问题标题】:link in gridview to details page在 gridview 中链接到详细信息页面
【发布时间】:2025-12-11 09:50:01
【问题描述】:

我要做的是创建一个Gridview 并在网格中有一个HyperLinkField 它会将我发送到该项目的详细信息页面,我有填充网格的部分和链接以及如何将元素的 id 传递到另一个页面

我遇到的问题是,当我运行并单击链接时,会显示我想要但为空白的详细信息页面。当我调试时,我没有到达详细信息页面

这是我的代码

填充网格

var datos =  db.Ticket   
        GridView1.DataSource = datos;
        GridView1.DataBind();

显示 GridView

<asp:GridView ID="GridView1" runat="server">
   <Columns>

      <asp:HyperLinkField HeaderText="Ver Ticket" Text="Ir Historial Ticket" DataNavigateUrlFormatString="~/DetailTicket.aspx?id={0}" DataNavigateUrlFields="IdTicket" />
   </Columns>

</asp:GridView>

详情页面

public partial class DetailTicket: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["id"] != null)
           var id= Request.QueryString["id"];
        var datos =  db.detailTicket.Where(e=>e.IdTicket==id)   
        GridView1.DataSource = datos;
        GridView1.DataBind();
    }
}

【问题讨论】:

  • 你调试过代码吗?你会得到哪个值 Request.QueryString["id"]
  • (但问题是当我调试它时也没有到达 page_load )你检查你的 url ...它对我工作正常并触发加载事件
  • 我调试的是我的 DetailTicket 的页面加载,在我点击链接后它没有到达它显示页面localhost:2509/DetailTicket.aspx?id=1
  • 在 mvc 中我确实喜欢这个 @Html.ActionLink("detail ticket", "index", new { id = item.IdTicket}) 在我的页面中只是 public ActionResult Index(int?id) {}
  • 该网址直接进入浏览器并检查您的事件是否被触发

标签: asp.net gridview hyperlink


【解决方案1】:

嘿,你的路径可能有问题......

我已经测试了你的代码,它对我的​​工作正常......

【讨论】:

    【解决方案2】:

    您在Page_Load 事件中的if 语句中缺少括号。

    protected void Page_Load(object sender, EventArgs e)
    {
    
      if (Request.QueryString["id"] != null)
      {
           var id= Request.QueryString["id"];
           var datos =  db.detailTicket.Where(e=>e.IdTicket==id)   
           GridView1.DataSource = datos;
           GridView1.DataBind();
      }
    }
    

    没有括号,您的id 变量将不会在下一行显示。如果它甚至可以编译,我会感到惊讶。

    【讨论】:

    • 但问题是当我调试它时也没有到达 page_load
    • @Diego_DX 修复支架问题并重试。如果仍然不起作用不是因为您发布的代码。同样,如果您的代码实际编译,我会感到惊讶。就目前而言,您正在引用一个超出范围的变量。编译器会抱怨。
    • 是的,对不起,我忘了放括号,但我遇到的问题是它没有到​​达我想要的页面,或者我如何在 asp.net 中创建一个接受参数的页面?
    • 你的代码没问题。您传递参数的方式是正确的。您可以通过查看网格上生成的链接轻松地确认它。我认为您的问题出在其他地方。