在Gridview中更新了列

时间:2013-03-18 16:24:20

标签: asp.net gridview

我有一个绑定到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

由于

1 个答案:

答案 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;
}
相关问题