【问题标题】:RadGrid make field invisible on EditRadGrid 使字段在编辑时不可见
【发布时间】:2015-03-24 23:59:09
【问题描述】:
<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;
    }
}

【问题讨论】:

    标签: asp.net telerik telerik-grid radgrid


    【解决方案1】:

    您提供的解决方案是完美的,但如果您还可以在每列中添加 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
        }
    }
    

    如果您需要更多信息,请告诉我。

    【讨论】:

      【解决方案2】:

      这只是一个建议的替代方案。我曾与 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"

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

      【讨论】:

      • 我建议使用服务器端可见属性代替客户端显示属性。某些用户可能会在浏览器中更改其显示属性(使用开发人员工具)并更新/查看其值。
      • 我是一名 UI 开发人员,而不是服务器端 :) 但是是的,我认为服务器端代码解决方案更好。我只是想传递一个替代方案。谢谢杰伊什。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2017-09-26
      • 2011-12-13
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多