2015-03-24 89 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