【问题标题】:GridView Editing ,Deleting ,Updating is not working?GridView 编辑、删除、更新不起作用?
【发布时间】:2013-10-13 16:10:08
【问题描述】:

我将 Some Invoice No 从表格放入下拉列表,选择发票编号后,我可以将所有产品带到网格视图,包括附加、价格和所有,

我的问题是我必须点击两次才能编辑该行,但它没有更新,当第一次点击第一行的编辑按钮时,它不起作用,但点击下一行后,先编辑按钮行启用编辑文本框,但不只更新网格上的空数据...

图片 http://i.stack.imgur.com/X8W6Q.gif

在这部分中,我将数据带到网格中..

    DataTable DataTbt = new DataTable();
    SqlCommand Command = new SqlCommand();
    SqlDataAdapter DtaAdapter = new SqlDataAdapter();

    protected void ddlInvoiceNumber_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            GetReturnRecords("Invoice No", ddlInvoiceNumber.SelectedValue);
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", String.Format("alert('Error occured : {0}');", ex.Message), true);
        }
        finally
        {
            DataTbt.Clear();
            DataTbt.Dispose();
            DtaAdapter.Dispose();
            Command.Dispose();
            Connection.Close();
        }
    }

    private void GetReturnRecords(string searchBy, string searchVal)
    {
        try
        {
            Command = new SqlCommand("SP_SearchPurchasesLines", Connection);
            Command.CommandType = CommandType.StoredProcedure;
            Command.Parameters.AddWithValue("@SearchBy", searchBy);
            Command.Parameters.AddWithValue("@SearchVal", searchVal);
            DtaAdapter.SelectCommand = Command;
            DtaAdapter.Fill(DataTbt);
            if (DataTbt.Rows.Count > 0)
            {
                GridViewPurchaseReturn.DataSource = DataTbt;
                GridViewPurchaseReturn.DataBind();
            }
            else
            {
                GridViewPurchaseReturn.DataSource = DataTbt;
                GridViewPurchaseReturn.DataBind();
            }
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", String.Format("alert('Error occured : {0}');", ex.Message), true);
        }
        finally
        {
            DataTbt.Clear();
            DataTbt.Dispose();
            Command.Dispose();
            Connection.Close();
        }
    }

数据绑定到网格..

    private void BindReturnGrid()
    {
        try
        {
            DtaAdapter = new SqlDataAdapter("SP_SearchPurchasesLines", Connection);
            DtaAdapter.Fill(DataTbt);
            if (DataTbt.Rows.Count > 0)
            {
                GridViewPurchaseReturn.DataSource = DataTbt;
                GridViewPurchaseReturn.DataBind();
            }
            else
            {
                GridViewPurchaseReturn.DataSource = null;
                GridViewPurchaseReturn.DataBind();
            }
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Error occured : " + ex.Message.ToString() + "');", true);
        }
        finally
        {
            DataTbt.Clear();
            DataTbt.Dispose();
            DtaAdapter.Dispose();
            Connection.Close();
        }
    }

编辑更新从网格中删除行...

    protected void GridViewPurchaseReturn_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridViewPurchaseReturn.EditIndex = -1;
        BindReturnGrid();
    }

    protected void GridViewPurchaseReturn_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridViewPurchaseReturn.EditIndex = e.NewEditIndex;
        BindReturnGrid();
    }

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    我认为您需要在页面加载事件的 !ISPostbak 内部添加绑定 gridview 方法。

    查看此代码

    page-load ()
    {
    if(!IsPostback)
    {
    BindReturnGrid();
    }
    
    }
    

    【讨论】:

    • 我仍然有同样的问题..我无法编辑网格...听到的是我的示例代码 sql + sp Source Code Download
    【解决方案2】:

    您必须修改您的 GridViewPurchaseReturn_RowUpdatingGridViewPurchaseReturn_RowDeleting 方法以更新更改:

    protected void GridViewPurchaseReturn_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       //Your code to delete the records in db        
        BindReturnGrid();
    }
    
    
    
    
    protected void GridViewPurchaseReturn_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //Your code to update the records in db
        GridViewPurchaseReturn.EditIndex = -1;
        BindReturnGrid();
    }
    

    编辑:在您处理命令并关闭连接后,我认为您的 GridView DataSource 应该为空。为了避免这种情况,我会像这样更改代码:

    //DataTable DataTbt = new DataTable();
    //SqlCommand Command = new SqlCommand();
    //SqlDataAdapter DtaAdapter = new SqlDataAdapter();
    
    protected void ddlInvoiceNumber_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            GetReturnRecords("Invoice No", ddlInvoiceNumber.SelectedValue);
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", String.Format("alert('Error occured : {0}');", ex.Message), true);
        }
        finally
        {
            //DataTbt.Clear();
            //DataTbt.Dispose();
            //DtaAdapter.Dispose();
            //Command.Dispose();
            //Connection.Close();
        }
    }
    
    private void GetReturnRecords(string searchBy, string searchVal)
    {
        DataTable DataTbt = new DataTable();
        SqlDataAdapter DtaAdapter = new SqlDataAdapter();
        try
        {
            SqlCommand Command = new SqlCommand("SP_SearchPurchasesLines", Connection);
            Command.CommandType = CommandType.StoredProcedure;
            Command.Parameters.AddWithValue("@SearchBy", searchBy);
            Command.Parameters.AddWithValue("@SearchVal", searchVal);
            using (Connection)
            {
                Connection.Open();
                DtaAdapter.SelectCommand = Command;
                DtaAdapter.Fill(DataTbt);
            }
            if (DataTbt.Rows.Count > 0)
            {
                GridViewPurchaseReturn.DataSource = DataTbt;
                GridViewPurchaseReturn.DataBind();
            }
            else
            {
                GridViewPurchaseReturn.DataSource = DataTbt;
                GridViewPurchaseReturn.DataBind();
            }
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", String.Format("alert('Error occured : {0}');", ex.Message), true);
        }
        finally
        {
            //DataTbt.Clear();
            //DataTbt.Dispose();
            //Command.Dispose();
            //Connection.Close();
        }
    }
    
    private void BindReturnGrid()
    {
        try
        {
    
            DataTable DataTbt = new DataTable();
            SqlDataAdapter DtaAdapter = new SqlDataAdapter("SP_SearchPurchasesLines", Connection);
            using (Connection)
            {
                Connection.Open();
                DtaAdapter.Fill(DataTbt);
            }
            if (DataTbt.Rows.Count > 0)
            {
                GridViewPurchaseReturn.DataSource = DataTbt;
                GridViewPurchaseReturn.DataBind();
            }
            else
            {
                GridViewPurchaseReturn.DataSource = null;
                GridViewPurchaseReturn.DataBind();
            }
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Error occured : " + ex.Message.ToString() + "');", true);
        }
        finally
        {
            //DataTbt.Clear();
            //DataTbt.Dispose();
            //DtaAdapter.Dispose();
            //Connection.Close();
        }
    }
    

    【讨论】:

    • 谢谢@afzalulh,但编辑部分是问题,,,我必须单击两次才能编辑该行,但它没有更新,当第一次单击第一行中的编辑按钮时,它不工作,但点击下一行后,编辑按钮第一行启用编辑文本框,
    • 我认为在重新绑定网格时第一次关闭连接后,它的数据源为空。我已经更新了我的答案,看看是否有帮助!
    • 我仍然有同样的问题..我无法编辑网格...听到的是我的示例代码 sql + sp Source Code Download
    • 好的,你可以下载示例项目here。 WebForm4.aspx 和 WebForm4.aspx.cs 是您可能需要查看的文件(我还必须更改标记)。
    • 非常感谢@afzalulh 但是,,,问题,我必须两次点击编辑来编辑字段,如何在当前状态的gridview数据绑定时添加viewstate。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2010-09-06
    • 2011-05-01
    • 2017-01-22
    • 1970-01-01
    相关资源
    最近更新 更多