【问题标题】:gridview row eval: column as name parameter instead of indexgridview 行评估:列作为名称参数而不是索引
【发布时间】:2011-02-17 21:52:30
【问题描述】:

我有一个 gridview 并且 OnRowDataBound 事件链接到这个函数:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    ThisRow = e.Row.DataItem as MyObjectModel;

    if (ThisRow.Property1 == null) { e.Row.Cells[5].Text = "-"; }

此代码查看数据源中对象的属性值,如果它为 null,则将 null 转换为在第 5 列中显示“-”。我遇到的问题是,如果我更改顺序gridview 的列,那么我需要更改所有其他修改的索引。 我想做的是将语句“e.Row.Cells[5].Text”更改为“列标题为 xyz 的单元格”。

有什么建议吗?

谢谢。

【问题讨论】:

  • 很难,因为 e 返回当前行值

标签: asp.net


【解决方案1】:

我认为你最好在你的 gridview 代码而不是你的代码后面处理这个问题,特别是如果你正在改变列。

这是一个小马的例子。随时根据需要进行编辑。

 <asp:TemplateField HeaderText="Likes Ponies?">
    <ItemTemplate> 
      <asp:Label ID="uxLikesPoniesLabel" runat="server" Text=’<%#  
        DataBinder.Eval(Container.DataItem, "FavoritePonies").ToString() == "" ? 
        "I like " + DataBinder.Eval(Container.DataItem, "FavoritePonies") + " Ponies!" :
         "-" 
        %>’ />
    </ItemTemplate>
  </asp:TemplateField> 

我在这里使用 C# (boolean condition) ? "value if true" : "value if false"

因此,此代码将检查特定行中的 FavoritePonies 列是否为 ""(因为 NULL 值显示为空字符串),如果是,则显示“-”。如果它不为空,那么它会将数据库中的原始内容显示为 DataBinder.Eval(Container.DataItem, "FavoritePonies") 为“我喜欢小马!”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多