Asp.net gridview行评估:列作为名称参数而不是索引

Asp.net gridview行评估:列作为名称参数而不是索引,asp.net,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,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的单元格”

有什么建议吗


谢谢。

我认为最好在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#
(布尔条件)?“值如果为真”:“值如果为假”
此处


因此,这段代码将检查特定行中的
FavoritePonies
列是否为
(因为空值显示为空字符串),如果是,则显示“-”。如果它不为null,那么它将使用
DataBinder.Eval(Container.DataItem,“FavoritePonies”)
显示数据库中最初的内容,并显示为“我喜欢Ponies!”。

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