2009-02-04 116 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,我不得不引用我希望通過指數來禁用行。可能有一種方法是通過它們的數據字段來引用這些行而不遍歷所有的行,但是我一眼就找不到它。

感謝您的幫助!