RadGrid在Edit上使字段不可见

时间:2015-03-24 23:59:09

标签: asp.net telerik telerik-grid radgrid

<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;
    }
}

2 个答案:

答案 0 :(得分:0)

这只是一个建议的选择。我和telerik一起工作了几次,至少可以说是痛苦的。您可以做的还是向父容器添加第三个条件。如果处于编辑模式,则显示一个类,例如&#39;编辑&#39;或&#39;当前&#39;。如果不处于编辑模式,请不要显示课程。然后,在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"

我提供的只是一个例子。我希望你找到它的用途。感谢

答案 1 :(得分: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
    }
}

如果您需要更多信息,请与我们联系。