如何使用Telerik Radgrid UserControl将文本框设置为只读

问题描述

我有一个Telerik RadGrid,它使用用户控件来编辑插入。如此配置

 <MasterTableView AutoGenerateColumns="false" CommandItemdisplay="Top"
                        DataKeyNames="Form_UsageId" Font-Size="Medium"
                        NoMasterRecordsText="No Transfer Locker Records Added" InsertItemPageIndexAction="ShowItemOnCurrentPage"
                        CommandItemSettings-AddNewRecordText="Add New Transfer Locker Entry">
                        <Columns>
                            <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"></telerik:GridEditCommandColumn>
                            <telerik:GridBoundColumn UniqueName="CaseNumber" HeaderText="Case Number" datafield="CaseNumber"></telerik:GridBoundColumn>
                            <telerik:GridBoundColumn UniqueName="ItemCount" HeaderText="# of Items" datafield="ItemCount"></telerik:GridBoundColumn>
                            <telerik:GridBoundColumn UniqueName="PersonFor" HeaderText="Person Intended For" datafield="PersonIntendedFor"></telerik:GridBoundColumn>
                            <telerik:GridBoundColumn UniqueName="PersonAdding" HeaderText="Person Putting In" datafield="PersonAdding"></telerik:GridBoundColumn>
                            <telerik:GridDateTimeColumn datafield="DateIn" HeaderText="Date Put In"
                                PickerType="DatePicker" EnableTimeIndependentFiltering="true" DataFormatString="{0:MM/dd/yyyy}">
                            </telerik:GridDateTimeColumn>
                            <telerik:GridBoundColumn UniqueName="TotalDays" HeaderText="# Days Open" datafield="TotalDays"></telerik:GridBoundColumn>
                        </Columns>
                        <EditFormSettings UserControlName="TransferLockerUserControl.ascx" EditFormType="webusercontrol" PopUpSettings-Modal="false">
                            <EditColumn UniqueName="EditCommandColumn1"></EditColumn>
                        </EditFormSettings>
                    </MasterTableView>

我正在使用用户控件来编辑记录,我需要将一些文本框设置为只读。这就是我尝试过的

if (e.Item.IsInEditMode && e.Item is GridEditableItem)
        {
            if (e.Item.ItemIndex == -1)
            {
                // insert
                GridEditableItem item = e.Item as GridEditableItem;

            }
            else
            {
                // edit
                GridEditableItem item = e.Item as GridEditableItem;
                (item["CaseNumber"].Controls[0] as TextBox).ReadOnly = true;
            }

        }

这失败并产生错误

enter image description here

有人可以帮我解决这个问题吗?

解决方法

我已经找到了解决这个问题的答案,我已经在下面发布了工作代码。

if (e.Item.IsInEditMode && e.Item is GridEditableItem)
        {
            if (e.Item.ItemIndex == -1)
            {
                // insert
                GridEditableItem item = e.Item as GridEditableItem;

            }
            else
            {
                // edit
                GridEditableItem item = e.Item as GridEditableItem;
                UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
                TextBox txt = (TextBox)userControl.FindControl("txtCaseNumber"); //access TextBox here
                txt.ReadOnly = true;
            }

        }