【问题标题】:Set boundcolumn width in gridview isn't working在gridview中设置boundcolumn宽度不起作用
【发布时间】:2009-04-02 05:57:51
【问题描述】:

我有一个可以显示两个不同报告的报告页面。所以我有一个 GridView,我的 aspx 页面上没有列。我在按钮单击事件处理程序中将 4 个 BoundFields 添加到 GridView。第一列是我需要为其中一个报告设置宽度的列(我用来添加此列的代码如下)。

gvReport.Columns.Clear();  
BoundField bf1 = new BoundField();  
...  
if (ddReportType.SelectedValue == "full") {  
bf1.HeaderText = "Facility";  
bf1.DataField = "Facility";  
bf1.ItemStyle.Wrap = true;  
bf1.ItemStyle.Width = 150;  
bf1.Visible = true;  
gvReport.Columns.Add(bf1);  
...

问题是这一列中有一行具有 SHA512 哈希值。由于中间没有空间,gridview 不会包裹它(我认为这就是正在发生的事情,无论如何)!所以我想我会在 OnRowDataBound 事件中捕获此列,并在哈希中间添加一个空格,以便它可以换行,但我不知道如何引用 BoundField。没有 ID 属性。有人有建议吗?是关于如何引用 BoundField,还是以其他方式让它很好地显示?

我最初在 aspx 文件中有列并尝试使用:
gvReport.Columns[0].ItemStyle.Width = 150;
gvReport.Columns[0].ItemStyle.Wrap = true;

但这也没有用。这很令人沮丧!

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    所以我们选择了 C 计划。我从来没有弄清楚如何引用 BoundField。我们通过在标记中创建两个 GridView 并更改哪一个是可见的来解决这个问题。为了解决文本不换行的问题,我们在 OnRowDataBound 事件处理程序中捕获它并检查文本的长度。我们只是在中间插入一个空格,瞧!它包装了!

    【讨论】:

      【解决方案2】:

      BoundField 是错误的。它更像是一个定义。稍后,当绑定或创建行时,您将处理行、单元格和数据项。

      你可以这样做:

      protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
      {
          if (e.Row.RowType == DataControlRowType.DataRow)
          {
              string value = e.Row.Cells[1].Text;
              if (!string.IsNullOrEmpty(value))
                  e.Row.Cells[1].Text = value.Insert(value.Length / 2, " ");
          }
      }
      

      其中 Cell[1] 是包含 long 值的列。在同一个地方,您可以使用 e.Row.DataItem 来获取实际数据,但是您需要知道它的类型。

      您可以创建模板字段并绑定到表达式或使用其子项的数据绑定事件来执行相同操作。

      另外,如果您使用的是 DataSet,您可以设置计算字段并绑定到它。总之……

      【讨论】:

      • 我们使用了 TemplateFields 和 ItemTemplates。由于我们创建了两个 GridView,我们能够在标记中绑定来自 Oracle ref_cursors 的列。我们的拆分代码类似于您的示例,但我们确切地知道要拆分它的位置,因为它是一个固定长度的哈希。
      猜你喜欢
      • 2014-11-03
      • 2013-12-18
      • 2020-09-28
      • 2019-08-11
      • 2012-01-06
      • 1970-01-01
      • 2011-04-15
      • 2013-06-30
      • 1970-01-01
      相关资源
      最近更新 更多