RadGrid Column редактируется при вставке, но устанавливается только для чтения при обновлении - PullRequest
4 голосов
/ 06 ноября 2010

У меня есть RadGrid, который имеет столбец, подобный:

<telerik:GridTemplateColumn HeaderText="Car" >
    <ItemTemplate>
        <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="MakeTextBox" runat="Server" Text='<%# Bind("Make") %> />
    </EditItemTemplate>
</telerik:GridTemplateColumn >

и я хочу настроить его так, чтобы этот столбец позволял вводить данные при вставке новых значений, а не при обновлении значений.

Может кто-нибудь сделать предложение?

Ответы [ 3 ]

3 голосов
/ 05 января 2013

Я думаю, что самый простой способ сделать это - добавить InsertItemTemplate и изменить EditItemTemplate на Label.

<telerik:GridTemplateColumn HeaderText="Car" >
    <ItemTemplate>
        <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> />
    </ItemTemplate>
    <InsertItemTemplate>
        <asp:TextBox ID="MakeTextBox" runat="Server" Text='<%# Bind("Make") %> />
    </InsertItemTemplate>
    <EditItemTemplate>
        <asp:Label ID="MakeLabel" runat="Server" Text='<%# Eval("Make") %> />
    </EditItemTemplate>
</telerik:GridTemplateColumn >

Таким образом, вам не нужно возиться с этим в вашем коде позади.

0 голосов
/ 20 декабря 2010

Я закончил с Page_Load

myTextBox.Enabled = Parent.NamingContainer is GridEditFormInsertItem;

Это в пользовательском контроле используется для обновления / вставки данных

0 голосов
/ 24 ноября 2010

Я нашел ваш вопрос, когда искал решение этой проблемы сам.Я был в состоянии сделать что-то вместе, что работает;Не знаю, лучший ли это путь, но я склонен идти с тем, что работает.; -)

Установите для GridTemplateColumn значение ReadOnly="true" и обязательно присвойте ему свойство UniqueName.Затем создайте обработчик PreRender для сетки, которая делает это:

    Private Sub RadGrid1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadGrid1.PreRender
        For Each column As GridColumn In RadGrid.Columns
            If column.UniqueName = "MyName" Then
                If column.Owner.IsItemInserted Then
                    CType(column, GridTemplateColumn).ReadOnly = False 
                Else
                    CType(column, GridTemplateColumn).ReadOnly = True
                End If
                Exit For
            End If
        Next

        RadGrid1.Rebind()
    End Sub
...