2009-02-04 71 views
0

我需要将GridView中的BoundField的'ReadOnly'属性设置为由同一个GridView显示的记录集中位字段的值。使用数据设置GridView的属性

我知道我可以在代码中实现这一点,但我想知道,出于兴趣,是否有可能在属性内使用<%>代码段声明式地执行此操作?

干杯,

杰米

回答

1

是的,你可以做到这一点。创建TemplatedField并在绑定语句中使用任何

<%# ((Employee)Container.DataItem).IsApproved ? "yes" : "no" %> 

,或者你可以从代码隐藏使用的方法

<%# FormatBool(((Employee)Container.DataItem).IsApproved) %> 

其中FormatBool是一个属性在您的代码隐藏

protected string FormatBool(bool value) 
{ 
    if (value) 
     return "yes"; 
    return "no"; 
} 
0

如果您需要绑定的属性,我会用一个模板列,然后设置行为存在。只有当你不能使用代码时,这才是你最好的选择。

我不认为有办法直接绑定BoundColumn的细节。

0

我无法找到一种方法来基于DetailView的数据声明性地操纵BoundField或TemplateField的属性。

Bendewey非常慈善地认为我是绑定到一个业务对象,实际上我正在处理数据直接在这种情况下 - 道歉没有说清楚。

我的代码解决方案的背后是如下:

protected void DetailsView1_DataBound(object sender, EventArgs e) 
    { 
     DetailsView dv = (DetailsView)sender; 

     if (dv.DataItemCount > 0) 
     { 
      DataRowView data = (DataRowView)dv.DataItem; 
      bool isFixed = (bool)data["IsFixed"]; 

      if (isFixed) 
      { 
       dv.Rows[2].Enabled = false; 
       dv.Rows[6].Enabled = false; 
      } 
     } 
    } 

我disapointed,我不得不引用我希望通过指数来禁用行。可能有一种方法是通过它们的数据字段来引用这些行而不遍历所有的行,但是我一眼就找不到它。

感谢您的帮助!