Gridview禁用1列asp.net上的编辑

Kar*_*arl 8 c# asp.net gridview edit visual-studio-2010

我正在使用gridview编辑来编辑我在gridview中的值,当我按下编辑时,所有列都可以编辑,我希望不允许编辑其中一列.

有什么方法可以做到这一点吗?

这是我的aspx代码:

<asp:GridView 

ID="GridView1" 
runat="server" 
AllowSorting="True" 
OnRowCommand="GridView1_SelectedIndexChanged1" 
AutoGenerateEditButton="True" 
OnRowCancelingEdit="GridView1_RowCancelingEdit" 
CellSpacing="10"
OnRowUpdating="GridView1_RowUpdating" ShowFooter="True" 
onselectedindexchanged="GridView1_SelectedIndexChanged"
OnRowEditing="GridView1_RowEditing">



</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

谢谢

nav*_*een 24

如果您正在使用asp:BoundField,请尝试

<asp:BoundField DataField="CustomerID"
        ReadOnly="true"      
        HeaderText="Customer ID"/>
Run Code Online (Sandbox Code Playgroud)

或者,如果你正在使用asp:TemplateField,你也可以

  1. asp:Label内部渲染它EditItemTemplate
  2. EditItemTemplate完全忽略该列

  • 看这个例子.http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.aspx BoundField必须位于`Columns'内 (2认同)

And*_*rei 5

当然,请使用EditItemTemplate.在以下示例中,不会在编辑模式下编辑字段ID:

<asp:GridView runat="server">
    <Columns>
        ...
        <asp:TemplateField HeaderText="ID">
            <EditItemTemplate>
                <%# Eval("ID") %>
            </EditItemTemplate>
        </asp:TemplateField>
        ...
    </Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

  • 这是因为默认情况下GridView的属性"AutoGenerateColumns"设置为true.因此,它为作为DataItem提供的对象的每个属性生成列,并添加声明的列(在我们的示例中为ID).您无法影响自动生成列的行为.如果你想要一些自定义的东西(比如在某个列上编辑禁用),你应该关闭自动生成列并使用BoundField,TemplateField等声明你需要的一切. (2认同)