当搜索值时,Gridview失去编辑索引

本文关键字:失去 编辑 索引 Gridview 搜索 | 更新日期: 2023-09-27 18:13:21

有一个从Gridview中搜索值的文本框。当值显示,然后每次我点击编辑它去到Gridview的第一个索引行。我只想编辑已按ID搜索过的行。例如,如果我搜索第8行中的一个值。它显示第8行,这很好,但当我单击编辑时,它又转到第一行。为什么会发生这种情况?

 SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGridView();
    }
}
 protected void BindGridView()
{
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter("select * from tblInventory", con);
    con.Open();
    da.Fill(dt);
    con.Close();
    if (dt.Rows.Count > 0)
    {
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}
 protected void btnSearch_Click(object sender, EventArgs e)
{
    SqlDataAdapter da = new SqlDataAdapter("select * from tblInventory where (Part like '%" + txtSearch.Text + "%') or (Brand like '%" + txtSearch.Text + "%' )", con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();

}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
    TextBox Part = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtPart");
    TextBox Description = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtDescription");
    TextBox Qty = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtQty");
    DropDownList Brand = (DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlBrand");
    TextBox ItemType = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtItemType");
    SqlCommand cmd = new SqlCommand("update tblInventory set Part='" + Part.Text + "',Description='" + Description.Text + "',Qty='" + Qty.Text + "',Brand='" + Brand.Text + "',ItemType='" + ItemType.Text + "' where ID=" + id, con);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    GridView1.EditIndex = -1;
    BindGridView();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    GridView1.EditIndex = -1;
    BindGridView();
}
   protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    GridView1.EditIndex = e.NewEditIndex;
    BindGridView();
}

当搜索值时,Gridview失去编辑索引

你需要修改你的BindGridView方法,它会处理这个问题。现在,当您在任何一行中搜索一个值时,它会显示结果,当单击edit时,它将停留在所选的行上。

txtSearch只是你的搜索文本框的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 btnSearch_Click(object sender, EventArgs e)
{
BindGridView(this.txtSearch.Text);
}
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);
}