【问题标题】:Failed to load viewstate in GridView1_RowEditing无法在 GridView1_RowEditing 中加载视图状态
【发布时间】:2015-09-25 14:59:25
【问题描述】:

我正在尝试将 GridView1_RowEditing 设置为 gridview 的 ID,而不是索引,因为当最终用户搜索值并编辑行时它会导致问题。我已经改变了我的代码:

 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
 GridView1.EditIndex = e.NewEditIndex;
 BindGridView();
}

到这里:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Label ID = (Label)GridView1.Rows[e.NewEditIndex].FindControl("ID");
    BindGridView();
}

ID 是数据库中列的名称。

但是当我第二次单击编辑按钮时出现此错误:

加载视图状态失败。视图状态所在的控制树 正在加载的必须与用于保存的控制树匹配 上一个请求期间的视图状态。例如,当添加 动态控制,在回发期间添加的控件必须匹配 在初始阶段添加的控件的类型和位置 请求。

【问题讨论】:

  • 尝试先绑定网格视图,然后访问它的数据。还有为什么你需要存储那个ID。当请求被提供时,那个“ID”变量就会消失。
  • 嗯,我已经看到了几个讨论,但我没有找到答案。它只是一个简单的Gridview,具有编辑、取消、更新功能和搜索框来搜索gridview。问题出在gridview的索引中。例如,Gridview 中有 10 行,如果您尝试自己制作此 gridview 并在第 10 行中搜索一个值,它会显示一行是第 10 行,如果没问题,但如果您单击编辑,则所有 10 行显示和编辑索引转到第一行。
  • 您说“如果您尝试自己制作此网格视图”是什么意思?
  • 当您单击编辑时,会发生回发,并且网格会重新绑定到其数据源,并且由于它不知道您的搜索,因此它会显示所有 10 行。

标签: c# asp.net gridview


【解决方案1】:

您可以在 BindGridView 方法中使用参数。 txtSearch 是用于搜索 gridview 的 TextBox ID。如果您搜索一个值并单击编辑,它会停留在选定的行上。

例如:

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGridView(this.txtSearch.Text);


    }
}

protected void BindGridView(string column1)
{

    SqlCommand cmd = new SqlCommand("select * from table1 where (column1 like '%" + txtSearch.Text + "%')", con);
    con.Open();
    cmd.Parameters.AddWithValue("@column1 ", column1 );
    GridView1.DataSource = cmd.ExecuteReader();
    GridView1.DataBind();
    con.Close();

}

  protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    BindGridView(this.txtSearch.Text);

}

  protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    GridView1.EditIndex = -1;
    BindGridView(this.txtSearch.Text);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多