RadGrid 使字段在编辑时不可见
RadGrid make field invisible on Edit
<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>
在编辑时,我喜欢让一个字段不可见。
我正在使用以下有效的代码,但想检查它是否是最佳实践:
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;
}
}
这只是一个建议的替代方案。我曾与 telerik 合作过几次,至少可以说这是一种痛苦。您还可以向父容器添加第三条件。如果处于编辑模式,则显示 class,例如 'edit' 或 'current'。如果不处于编辑模式,则不显示 class。然后,在您的 CSS 中,您可以 select 隐藏任何要隐藏的元素。
<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 控件(我只是从您的代码中获取了一些东西),您可以执行以下操作来添加您的 class:
<telerik:GridButtonColumn ConfirmText="Delete?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" CssClass="uniqueclass" />
我在上面的控件中添加了CssClass="uniqueclass"
我提供的只是一个例子。我希望你能找到它的用途。谢谢
您提供的解决方案是完美的,但如果您在每一列中也添加 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
}
}
如果您需要更多信息,请告诉我。
<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>
在编辑时,我喜欢让一个字段不可见。 我正在使用以下有效的代码,但想检查它是否是最佳实践:
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;
}
}
这只是一个建议的替代方案。我曾与 telerik 合作过几次,至少可以说这是一种痛苦。您还可以向父容器添加第三条件。如果处于编辑模式,则显示 class,例如 'edit' 或 'current'。如果不处于编辑模式,则不显示 class。然后,在您的 CSS 中,您可以 select 隐藏任何要隐藏的元素。
<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 控件(我只是从您的代码中获取了一些东西),您可以执行以下操作来添加您的 class:
<telerik:GridButtonColumn ConfirmText="Delete?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" CssClass="uniqueclass" />
我在上面的控件中添加了CssClass="uniqueclass"
我提供的只是一个例子。我希望你能找到它的用途。谢谢
您提供的解决方案是完美的,但如果您在每一列中也添加 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
}
}
如果您需要更多信息,请告诉我。