使细胞不可编辑

时间:2013-11-12 21:12:24

标签: c# asp.net webforms

我有一个可通过编辑按钮编辑的网格视图:

enter image description here

按下编辑后:

enter image description here

当用户按下'编辑'时,我不希望第一列“活动日期”可编辑。

如何阻止此控件更改为文本框?

这里编辑的是gridview代码:

<asp:GridView ID="viewHoursGridView" runat="server" AllowPaging="True" AutoGenerateColumns="False"
              DataSourceID="SqlDataSource6" DataKeyNames="PK_DailyTaskHours"
              BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
              CellPadding="3" CellSpacing="2" Width="94%" OnRowDeleting="viewHoursGridView_OnRowDeleting" OnRowEditing="viewHoursGridView_RowEditing" OnRowUpdating="viewHoursGridView_RowUpdating"
              OnRowDataBound="viewHoursGridView_OnRowDataBound" CssClass="centerGridView">
    <Columns>
       <asp:BoundField DataField="ActivityDate" HeaderText="Activity Date" SortExpression="ActivityDate" DataFormatString="{0:MM/dd/yyyy}" />
       <asp:BoundField DataField="Hours" HeaderText="Hours" SortExpression="Hours" />
       <asp:BoundField DataField="Notes" HeaderText="Notes" SortExpression="Notes" />
       <asp:BoundField DataField="CreateDate" HeaderText="Created Date" SortExpression="CreateDate" Visible="false" />
       <asp:CommandField ShowDeleteButton="True" />
       <asp:CommandField ShowEditButton="True" />
    </Columns>
    <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
    <HeaderStyle BackColor="#7fc041" Font-Bold="True" ForeColor="White" />
    <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
    <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
    <SortedAscendingCellStyle BackColor="#FFF1D4" />
    <SortedAscendingHeaderStyle BackColor="#B95C30" />
    <SortedDescendingCellStyle BackColor="#F1E5CE" />
    <SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>

2 个答案:

答案 0 :(得分:4)

您可以使用ReadOnly属性。

来自MSDN

  

BoundField.ReadOnly Property

     

获取或设置一个值,指示是否   可以在编辑模式下修改字段的值。

在Code-Behind中使用它:

((BoundField)viewHoursGridView.Columns[0]).ReadOnly = true;

或者在ASPX代码中:

<asp:BoundField ReadOnly="True" DataField="ActivityDate" HeaderText="Activity Date" SortExpression="ActivityDate" DataFormatString="{0:MM/dd/yyyy}" />

答案 1 :(得分:2)

您也可以将其设为模板字段......

<asp:TemplateField runat="server" ID="" HeaderText="Activity Date" 
                   SortExpression="ActivityDate">
    <ItemTemplate>
        <asp:Label runat="server" 
                   Text='<%# Eval(Container.DataItem, "ActivityDate", "{0:MM/dd/yyyy}") %>' />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox runat="server" Text='<%# Bind("ActivityDate") %>' />
    </EditItemTemplate>
</asp:TemplateField>

如果您可以访问Telerik套件,则可以在文本框字段上使用Telerik的RadmaskedTextBox来强制用户输入。