1

我有一个可以通过编辑按钮编辑的gridview:

在此处输入图像描述

按编辑后:

在此处输入图像描述

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

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

编辑这里是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>
4

2 回答 2

4

您可以使用该ReadOnly物业。

来自MSDN

BoundField.ReadOnly 属性

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

要在代码隐藏中使用它:

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

或者在 ASPX 代码中:

<asp:BoundField ReadOnly="True" DataField="ActivityDate" HeaderText="Activity Date" SortExpression="ActivityDate" DataFormatString="{0:MM/dd/yyyy}" />
于 2013-11-12T21:15:32.763 回答
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 来强制用户输入。

于 2013-11-12T21:26:36.877 回答