0

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

谢谢

4

1 回答 1

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;
}
于 2013-03-18T16:31:40.987 回答