2013-01-11 31 views
0

我想讓單元品牌代碼只在點擊編輯時才能讀取。但是,當我使用屬性只讀它變得如此複雜。因爲點擊新的時候,品牌代碼不能點擊。如何在編輯時使單元格只讀?

這裏我的代碼

<dx:ASPxGridView id="gvBrand" runat="server" CssPostfix="Aqua" SettingsBehavior-ConfirmDelete="true" CssFilePath="~/App_Themes/styles.css" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" KeyFieldName="BrandCode" > 
    <Styles CssPostfix="Aqua" CssFilePath="~/App_Themes/styles.css"> 
    <LoadingPanel ImageSpacing="8px" /> 
    </Styles> 

    <SettingsPager> 
     <AllButton Text="All" /> 
     <NextPageButton Text="Next &gt;" /> 
     <PrevPageButton Text="&lt; Prev" /> 
    </SettingsPager> 

    <SettingsText CommandUpdate="Save" /> 
    <ImagesFilterControl> 
     <LoadingPanel Url="~/App_Themes/Editors/Loading.gif"></LoadingPanel> 
    </ImagesFilterControl> 

    <Images SpriteCssFilePath="~/App_Themes/{0}/sprite.css"> 
     <LoadingPanelOnStatusBar Url="~/App_Themes/GridView/gvLoadingOnStatusBar.gif">  </LoadingPanelOnStatusBar> 

     <LoadingPanel Url="~/App_Themes/GridView/Loading.gif"></LoadingPanel> 
    </Images> 

     <StylesEditors> 
      <CalendarHeader Spacing="1px"></CalendarHeader> 

      <ProgressBar Height="25px"></ProgressBar> 
      </StylesEditors> 
       <SettingsLoadingPanel ImagePosition="Top" /> 
       <Settings ShowFilterRow="True" ShowGroupPanel="true" /> 

       <Columns> 
        <dx:GridViewCommandColumn VisibleIndex="0"> 
         <EditButton Visible="True" /> 
         <NewButton Visible="True" /> 
         <DeleteButton Visible="True" /> 
        </dx:GridViewCommandColumn> 

       <dx:GridViewDataTextColumn FieldName="BrandCode" VisibleIndex="1" Caption="Brand Code" 
         EditCellStyle-HorizontalAlign="Left" > 
         <EditFormSettings Visible="True" ColumnSpan="1" /> 
         <PropertiesTextEdit MaxLength="3" Width="35px"> 
          <ValidationSettings SetFocusOnError="True"> 
           <RequiredField IsRequired="True" /> 
          </ValidationSettings> 
         </PropertiesTextEdit> 
        </dx:GridViewDataTextColumn> 

        <dx:GridViewDataTextColumn FieldName="BrandName" VisibleIndex="2" 
         Caption="Brand Name" > 
         <EditFormSettings ColumnSpan="2" /> 
         <PropertiesTextEdit MaxLength="50"> 
          <ValidationSettings SetFocusOnError="True"> 
           <RequiredField IsRequired="True" /> 
          </ValidationSettings> 
         </PropertiesTextEdit> 
        </dx:GridViewDataTextColumn> 

        <dx:GridViewDataCheckColumn FieldName="isBlock" Visible="false" 
         EditCellStyle-HorizontalAlign="Left" > 
        <EditFormSettings Visible="true" VisibleIndex="3" Caption="Block"/> 
        </dx:GridViewDataCheckColumn> 

       </Columns> 
      </dx:ASPxGridView> 

回答

0

您需要處理ASPxGridView.CellEditorInitilaize事件:

protected void MyGridOnCellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e) { 
    ASPxGridView gridView = (ASPxGridView).sender; 
    e.Editor.ReadOnly = !gridView.IsNewRowEditing && "BrandCode".Equals(e.Column.FieldName); 
} 
0

感謝回答我剛剛發現它昨天。

VB.NET

Protected Sub gvBrand_CellEditorInitialize(ByVal sender As Object, ByVal e As DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs) Handles gvBrand.CellEditorInitialize 
     If (gvBrand.IsNewRowEditing) Then 
      Return 
     End If 
     If (e.Column.FieldName = "BrandCode") Then 
      e.Editor.ReadOnly = True 

     End If 
    End Sub 
0

雖然在串聯模式下,e.Editor.ReadOnly沒有爲我工作,但 設置e.Editor.Enabled做:

protected void OnCellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e) 
    { 
     List<string> editableFields = new List<string> {"Status"}; 
     e.Editor.Enabled = editableFields.Contains(e.Column.FieldName); 
    } 
相關問題