我有一个绑定到ObjectDataSource的网格视图。用户完成数据更新后,我想将他们的用户名或用户ID放在UpdatedBy列中,以跟踪谁更新了哪些记录。 UpdatedBy列可以在页面上隐藏或只读,因此用户不能只在其中放置任何文本。
这是我的UpdatedBy字段:
<asp:BoundField DataField="UpdatedBy" HeaderText="Updated By" SortExpression="UpdatedBy" />
<asp:TemplateField HeaderText="Updated By">
<asp:itemTemplate>
<asp:Label ID="lblUpdatedBy" runat="server" Text='<% #Eval("UpdatedBy") %>' Width="30" ></asp:Label>
</asp:itemTemplate>
<asp:editItemTemplate>
<asp:TextBox ID="txtUpdatedBy" runat="server" CssClass="Gridview_EditItem" Text='<% #Bind("UpdatedBy") %>' Width="30" ></asp:TextBox>
</asp:editItemTemplate>
</asp:TemplateField>
我在RowUpdating事件中添加了更新代码,但由于某种原因它无效。
protected void gvProductQuery_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow gr = gvProductQuery.Rows[e.RowIndex];
TextBox tb = gr.FindControl("txtUpdatedBy") as TextBox;
tb.Text = cUser.DomainLogin;
}
上面代码中的tb为Null。请帮忙。或者有更简单的方法吗?我正在使用VS2012
由于
答案 0 :(得分:1)
试试这个:
protected void gvProductQuery_RowEditing(object sender, GridViewEditEventArgs e)
{
gvProductQuery.EditIndex = e.NewEditIndex;
gvProductQuery.DataBind();
}
protected void gvProductQuery_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = gvProductQuery.Rows[gvLevels.EditIndex];
TextBox tb = row.FindControl("txtUpdatedBy") as TextBox;
tb.Text = cUser.DomainLogin;
}