我有一个可通过编辑按钮编辑的网格视图:
按下编辑后:
当用户按下'编辑'时,我不希望第一列“活动日期”可编辑。
如何阻止此控件更改为文本框?
这里编辑的是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>
答案 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来强制用户输入。