【问题标题】:How can I make my Gridview rows clickable by clicking anywhere on the row?如何通过单击行上的任意位置使我的 Gridview 行可点击?
【发布时间】:2016-04-20 06:31:57
【问题描述】:

我正在为大学做一个项目。这是一个商店网站,客户可以在这里下订单。

到目前为止,我所做的是使用 linq 查询在 Gridview 中填充产品。

现在,我遇到的问题是我想让这些行可点击,这样我就可以执行 gv_SelectedIndexChanged 方法,这样我就可以将产品描述附加到下面的标签上。

我还希望能够将数据传递到与单击按钮时选择的行相关的另一个页面。我有理由相信我可以解决这个问题,我以前做过类似的事情。

所以我的问题是如何使我的 Gridview 行可点击?

这是我拥有的 Gridview。

<asp:GridView ID="gv" runat="server" OnSelectedIndexChanged="gv_SelectedIndexChanged">
    </asp:GridView>

这是填充它的代码。

var products = from p in db.ProductTbls
                       select new
                       {
                           Name = p.ProductName,
                           Cost = p.UnitPrice.ToString(),
                           Stock = p.Quantity.ToString()
                       };

        gv.DataSource = products.ToList().Distinct();
        gv.DataBind();

我尝试使用在网上找到的指南,但我无法弄清楚如何让它发挥作用。 Guide

【问题讨论】:

标签: c# asp.net linq gridview


【解决方案1】:

@ConorS,我认为您的应用程序崩溃的原因是您在执行 Lazy 操作之前执行了贪婪操作。我的意思是你应该在 .ToList() 之前执行 .Distinct.. 因此你应该把它写成:

 gv.DataSource = products.Distinct().ToList();

像 ToList() 这样的贪婪操作会立即执行,而像 .Distinct 这样的操作会被延迟...... 你可以找到更多关于这两种类型here

【讨论】:

  • @JonH 他编辑了问题,并删除了他说他的应用程序崩溃的部分。这就是这个答案所指的见鬼。所以请删除反对票。
  • 它崩溃了,因为我是个白痴,哈哈,我忘了匹配列名,所以它向我抛出了一个错误......只是一个愚蠢的错误。
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 2011-12-16
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多