【问题标题】:Show and Hiding information in ASP.NET data grid在 ASP.NET 数据网格中显示和隐藏信息
【发布时间】:2011-12-04 04:43:20
【问题描述】:

我有一个数据网格,它在一列中包含大量信息。 我想要一种方法让用户预览该列中的一些内容,然后单击该列中的“更多”超链接,将他们带到另一个页面,该页面显示该列中的所有信息,允许他们向其中添加更多信息以及该行中的其他项目。

我已经在所有信息的末尾添加了更多超链接,但我会更改例如:

“嗨,我叫 stefan,我喜欢在沙滩上散步和其他东西......更多”

“嗨,我叫 stefan……更多”

在他们点击更多后,我将如何在新的 asp 页面上的新数据网格中拉出选定的行?

当我点击更多超链接时,它不会打开正确的行,而只会打开 blogid 2。

【问题讨论】:

  • 你试过什么?我想您了解您的专栏必须包含文本以外的内容?您是否了解其他类型的列的选择?
  • 您好,我尝试按照网上的指南将其转换为模板,但这对我没有帮助。我现在成功地获得了更多按钮的超链接到另一个页面,但它显示表格上的第一行而不是我点击更多的行?
  • DataGrid 真的很老了,DataGridView 用于 Windows 窗体。你是说 GridView 吗?
  • 您应该向我们展示您拥有的东西,并寻求帮助以使其发挥作用。你问问题的方式让我们认为你很懒惰,没有做任何工作,你要求我们为你做你的工作。既然您告诉我们您尝试过模板,请发布您当前“尽力而为”的示例。我们会帮忙的。
  • 您好,我想上传图片,但我没有足够的积分来上传图片,很抱歉,我现在上传了!

标签: c# asp.net sql gridview


【解决方案1】:

您可以在 GridView 中使用 HyperLink。您可以使用 CommangArgument 和 CommandName 属性来保存特定数据。当您单击超链接时,数据将作为查询字符串传递到下一页。这样您就可以使用查询字符串

要显示“...更多”,您可以使用 substring 方法.. substring 作为长度并将 ....more 连接到您的超链接文本。

MSDN for CommandArgument

Sample for Passing data with LinkButton

【讨论】:

    【解决方案2】:

    这样处理 OnRowDataBound:

    protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
      {
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
          // say for example that the column with long text is the 5th one
          e.Row.Cells[5].Text =  e.Row.Cells[5].Text.Length>20?e.Row.Cells[5].Substring(0,20)+" <a href=\"DetailsPage.aspx?BlogID=\""+e.Row.Cells[0].Text+"\"> more...</a>";
        }
    
      }
    

    第一列 (Cells[0]) 包含博客 ID。我认为这就是您现在拥有 gridview 的方式。

    【讨论】:

      【解决方案3】:

      我想您可能正在寻找text-overflow: ellipsis; CSS 样式。然后,您可以使用 jQuery 或纯 javascript 来切换样式并显示所有文本。

      我不太确定今天的 Firefox 是如何处理这个问题的,但 IE 没问题。

      【讨论】:

        【解决方案4】:

        我设法通过使用 sql 查询解决了这个问题, 左(内容,50)

        显示前 50 个字符。

        【讨论】:

          【解决方案5】:

          你可以试试下面的代码:

           <asp:TemplateField HeaderText="Description" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left">
                <ItemTemplate>
                    <%# (Eval("strDescription").ToString().Length > 55 ? Eval("strDescription").ToString().Substring(0, 55) + "....." : Eval("strDescription"))%>
               </ItemTemplate>
           </asp:TemplateField>
          

          只需在此项目模板中添加超链接并将您的 blogid(在您的情况下)分配给该超链接即可打开您想要的详细信息页面。

          【讨论】:

            猜你喜欢
            • 2013-09-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-25
            • 1970-01-01
            • 2014-08-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多