2011-09-16 66 views
0

我目前正在使用ASPxGridView控件的aspx網站。我能夠以我想要的方式顯示GridView上的數據。但是,當我單擊「編輯」按鈕時(由控件本身在命令列下提供),會出現我的問題。點擊該按鈕後,GridView會將該行更改爲可編輯的行。但是,我無法更改文本框內的值。請注意,我已經在GridView的智能標記和xml源本身上將ReadOnly屬性設置爲false。ASPxGridView無法用ReadOnly編輯行錯誤

我試圖創建一個測試標誌,其中只要ReadOnly屬性設置爲true,文本框的背景顏色就會變成藍色。運行該程序後,無論ReadOnly設置爲true還是false,文本框都會以藍色着色。

是否有任何其他屬性可以幫助我使這些文本框可編輯?非常感謝!

乾杯!

+0

當您說「但是,我無法更改文本框內的值」,您的意思是說,您無法輸入單元格? – Metaller

+0

是的。我無法輸入單元格。例如,當單元格內的原始值爲「1000」時,單擊編輯按鈕時,它會顯示「1000」內具有相同值的文本框版本。我無法編輯它。我無法輸入也無法更改。感謝您的迴應。 – Smiley

+0

您是否設置了KeyFieldName網格的屬性?還要檢查你是否處理了RowUpdating之類的事件,或者如果你使用了數據源控件,那麼還有UpdateCommand。 – kolbasov

回答

5

我今天剛碰到同樣的問題。如果你的數據源設置爲匿名類型此症狀會出現:

void BindDataGrid() 
{ 
    var gridData = from cm in MyCollection 
        select new 
        { 
         UniqueId = cm.UniqueId, 
         Min = cm.SomeNumber ?? 0, 
         Max = cm.SomeOtherNumber ?? 0, 
         Description = cm.Description 
        }; 

    this.myGrid.DataSource = gridData; 
    this.myGrid.DataBind(); 
} 

的修復是建立網格使用類。就在那時能夠計算出的數據類型每個單元格,他們在UI變成可編輯:

public class MyGridViewModel 
{ 
    public Guid UniqueId { get; set; } 
    public int Min { get; set; } 
    public int Max { get; set; } 
    public string Description { get; set; } 
} 

void BindDataGrid() 
{ 
    var gridData = from cm in MyCollection 
        select new MyGridViewModel() 
        { 
         UniqueId = cm.UniqueId, 
         Min = cm.SomeNumber ?? 0, 
         Max = cm.SomeOtherNumber ?? 0, 
         Description = cm.Description 
        }; 

    this.myGrid.DataSource = gridData; 
    this.myGrid.DataBind(); 
} 
0

我做了嘗試編輯受保護財產的錯誤。如果某個屬性具有公共getter和一個私有或受保護的setter,則它將在編輯表單中顯示爲只讀字段。希望這對某人有所幫助。