【问题标题】:Edit Item Template TextBox value in a Gridview Confusion在 Gridview 混乱中编辑项目模板文本框值
【发布时间】:2013-07-08 20:10:15
【问题描述】:

我有一个带有编辑命令字段的网格视图。 在gridview的一个模板字段中,我在编辑项模板中有一个文本框。 在 RowUpdating 事件中,我尝试获取文本框的值。

TextBox text = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtfname");

GridViewRow row =GridView1.Rows[e.RowIndex] as  GridViewRow;

TextBox tFirstName = row.FindControl("txtfname") as TextBox;

TextBox textFName = (TextBox)row.Cells[0].Controls[3];

三种方法我都试过了。当我放

if(!IsPostBack)Bind_grid();

我将 textbox.text 值设为空。如果我删除该条件,我将获得使用标记页面中的 Bind 函数绑定在控件上的值。我从未得到我在控件中编辑的值。

我哪里错了?解决方案?

【问题讨论】:

  • 有人尽快帮助我:(

标签: c# asp.net gridview textbox edititemtemplate


【解决方案1】:

我猜您的网格启用了分页。因此,您正在获取网格中显示的行的索引(而不是数据源)。

例如:您在网格的第 2 页中,每页有 10 个项目。您单击第三行的编辑。 e.RowIndex 将为 2。

如果你想将它映射到你的数据源,这应该是... ((page - 1) * items) + index;

((2-1) * 10) + 2 = 12

因此,在您的数据源中,您应该得到位于位置 12 的项目。

【讨论】:

  • 我不想让它映射到数据源。我想要当前页面中文本框的值。是的,我启用了分页
  • 事件的签名是什么?使用 GridViewEditEventArgs、GridViewRowEventArgs 或 GridViewUpdatedEventArgs 的那个?
  • 我在问题中提到它是 Rowupdating .. 签名有一个 GridViewUpdateEventArgs
  • 我认为唯一可能发生的事情是,您在 RowEditing 事件期间没有绑定,也没有保存编辑索引。这可能有助于msdn.microsoft.com/en-us/library/… ...
  • 所以,离开 if(!IsPostBack)Bind_grid();并添加 RowEditing 事件。
猜你喜欢
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多