一、对于
GridView
控件中的
<asp:BoundField>
字段,
如果在
RowDataBound
事件中改变它的值,点击
Edit
按钮时,该字段将不再进入编辑状态。例:
1
、
html
代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
Width="650px" OnRowDeleting="GridView1_RowDeleting" AllowPaging="True" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="GridView1_RowDataBound" OnRowEditing="GridView1_RowEditing" Font-Size="10pt" DataSourceID="SqlDataSource1" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="examid">
<Columns>
<asp:TemplateField HeaderText="
专业名称
">
<EditItemTemplate>
<asp:DropDownList ID="DdlPro" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="LbPro" runat="server" Text='<%# Eval("professionname") %>'></asp:Label>
</ItemTemplate>
<ItemStyle Width="12%" />
</asp:TemplateField>
<asp:BoundField DataField="addtime" DataFormatString="{0:d}" HeaderText="
加入时间
" />
<asp:CommandField HeaderText="
编辑
" ShowEditButton="True">
</asp:CommandField>
</Columns>
</asp:GridView>
2
、
C#
代码
protected
void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowState == DataControlRowState.Edit || (e.Row.RowState== (DataControlRowState.Edit | DataControlRowState.Alternate)))
{
e.Row.Cells[1].Text=Convert.ToDateTime(((TextBox)e.Row.Cells[1].Controls[0]).Text.Trim()).ToString();
}
e.Row.Cells[1].Text = Convert.ToDateTime(e.Row.Cells[1].Text).ToShortDateString();
}
}
二、
GridView
控件的
RowEditing
、
RowUpdating
事件用
Return
语句无法阻止其进入编辑状态和进行数据更新。
1
、在
RowEditing
中使用
Return
语句,其作用只是跳过
RowEditing
事件中
Return
语句后面的代码,并不影响进入编辑状态。即一旦进入
RowEditing
事件,进入编辑状态便不可避免。
2
、在
RowUpdating
事件使用
Return
语句,其作用只是跳过
RowUpdating
事件中
Return
语句后面的代码,数据更新会继续进行,即程序仍然要执行数据更新的操作。即一旦进入
RowUpdating
事件,数据更新操作便不可中止。
三、使用
GridView
控件时必须设置
DataKeyNames
属性
四、可使用
GridView
的
DataBind()
方法重新绑定更新后的数据
(
一般用于数据源改变或更新后
)
。例:
GridView1.DataBind();
五、如果
GridView
控件的
<asp:BoundField>
字段的
ReadOnly
属性设置为
True
,执行
GridView
控件的
RowUpdating
事件进行数据更新后,将会把
Null
赋予
ReadOnly
属性设置为
True
的
<asp:BoundField>
字段,从而造成数据的丢失。