gridview row eval:列作为名称参数而不是索引

时间:2011-02-17 21:52:31

标签: asp.net

我有一个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的单元格”。

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你可能最好在你的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值显示为空字符串),如果是,则显示“ - ”。如果它不为null,那么它将DataBinder.Eval(Container.DataItem, "FavoritePonies")中最初显示的内容显示为“我喜欢小马!”。