2015-03-24 120 views
0
<telerik:RadGrid runat="server" ID="rdReport" AutoGenerateColumns="false" AllowPaging="true" Skin="Metro" OnItemCommand="ItemCommand" OnItemDataBound="rdReport_ItemDataBound" OnPreRender="rdReport_PreRender" DataSourceID="FountainSource" AllowAutomaticUpdates="true" AllowAutomaticDeletes="true"> 
    <MasterTableView DataKeyNames="ID" CommandItemDisplay="None"> 
     <Columns> 
      <telerik:GridEditCommandColumn ButtonType="ImageButton" />         
      <telerik:GridBoundColumn DataField="LocName" HeaderText="Location" ReadOnly="true" /> 
      <  
      <telerik:GridBoundColumn DataField="Field1Value" HeaderText="Custom Field1" /> 
      <telerik:GridBoundColumn DataField="Field2Value" HeaderText="Custom Field2" /> 
      <telerik:GridBoundColumn DataField="Field3Value" HeaderText="Custom Field3" /> 

      <telerik:GridButtonColumn ConfirmText="Delete?" ConfirmDialogType="RadWindow" 
       ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" /> 
     </Columns> 
     <EditFormSettings> 
      <EditColumn ButtonType="ImageButton" /> 
     </EditFormSettings> 
    </MasterTableView> 
    <PagerStyle Mode="NextPrevAndNumeric" /> 
</telerik:RadGrid> 

在編輯上,我喜歡使字段不可見。 我使用下面的代碼工作,但要檢查,看它是否是最好的做法:RadGrid使字段不可見編輯

protected void rdReport_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    // Edit Mode 
    if ((e.Item is GridEditFormItem) && (e.Item.IsInEditMode)) 
    { 
     GridEditFormItem fndColumn = (GridEditFormItem)e.Item; 
     fnColumn["Field1Value"].Parent.Visible = false; 
    } 
} 

回答

0

您提供的解決方案是完美的,但如果您還將在每列中添加UniqueName屬性,那將是非常好的。如果我們不分配UniqueName,那麼將DataField值視爲UniqueName。

ASPX

<telerik:GridButtonColumn DataField="Field1Value" HeaderText="Custom Field1" UniqueName="Field1Value" /> 

ASPX.CS

protected void rdReport_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    // Edit Mode 
    if ((e.Item is GridEditFormItem) && (e.Item.IsInEditMode)) 
    { 
     GridEditFormItem fndColumn = (GridEditFormItem)e.Item; 
     fnColumn["Field1Value"].Parent.Visible = false; // "Field1Value" is column uniquename 
    } 
} 

讓我知道如果你需要更多的信息。

0

這僅僅是一個建議的替代方法。我已經和telerik合作過幾次了,至少可以說是一種痛苦。你可以做什麼也是添加一個三級條件的父容器。如果處於編輯模式,則顯示一個類,例如「編輯」或「當前」。如果不在編輯模式下,不要顯示課程。然後,在你的CSS中,你可以選擇你想隱藏的任何元素。

<div> 
<input type="text" id="whateverisgenerated" class="uniqueclass" /> 
</div> 

然後,在編輯模式下,你將有

<div class="edit"> 
<input type="text" id="whateverisgenerated" class="uniqueclass" /> 
</div> 

隨着你的CSS:

div.edit input.uniqueclass { display: none; } 

至於你Telerik的控制(我只是抓住了從您的代碼的東西),你可以做以下操作來添加你的課程:

<telerik:GridButtonColumn ConfirmText="Delete?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" CssClass="uniqueclass" /> 

我在上面的控件中添加了CssClass="uniqueclass"

我提供的僅僅是一個例子。我希望你找到它的用處。謝謝

+0

我會建議使用服務器端可視屬性來代替客戶端顯示屬性。某些用戶可能會在瀏覽器中更改其顯示屬性(使用開發人員工具)並更新/查看其值。 – 2015-03-25 05:10:05

+0

我是一個UI開發人員,而不是服務器端:)但是,我認爲服務器端代碼解決方案更好。我只是想通過一個替代方案。謝謝Jayesh。 – Pegues 2015-03-25 14:02:52