单击“编辑”按钮后,从GridView获取单元格值第2轮

时间:2018-09-12 18:56:31

标签: c# asp.net

我不久前发布了此帖子,但没有,我必须更新问题以确保得到正确的答案。

我有一个GridView。我需要基于GridView中的值更新SQL表。 当用户单击GridView上的默认EDIT按钮时,更改所做的任何更改,然后单击UPDATE。这是我遇到问题的地方。我已经尝试了多个OnRowEditing,OnRowUpdating,OnRowUpdate作为按钮控件。

这是我使用的代码。

protected void gvReviewedPolicy_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        DateTime dateTime = DateTime.Now;

        //GridViewRow editRow = gvReviewedPolicy.Rows[gvReviewedPolicy.EditIndex];
        //string Emailed = editRow.Cells[7].Text;
        //string UniqClient = editRow.Cells[1].Text;
        //string UniqPolicy = editRow.Cells[3].Text;

        string UniqClient = gvReviewedPolicy.SelectedRow.Cells[2].Text;
        string UniqPolicy = gvReviewedPolicy.SelectedRow.Cells[3].Text;
        //string Email = Emailed.ToString();
        //string dt = dateTime.ToString();
        //string Up = UniqClient.ToString();
        MessageBox.Show(UniqClient);
        MessageBox.Show(UniqPolicy);
        //MessageBox.Show(dt);

        string query = "UPDATE [Reviewed_Renewal_Policy] SET [DateUpdated] = @dateTime where ([UniqClient] = @UniqClient) AND ([UniqPolicy] = @UniqPolicy)";

        using (SqlConnection conn = new SqlConnection("Data Source=GTU-BDE01;Initial Catalog=TestDB;Integrated Security=True"))
        {
            using (SqlCommand comm = new SqlCommand(query, conn))
            {
                comm.Parameters.AddWithValue("@UniqClient", UniqClient);
                comm.Parameters.AddWithValue("@UniqPolicy", UniqPolicy);
                //comm.Parameters.AddWithValue("@Emailed", Emailed);
                comm.Parameters.AddWithValue("@dateTime", dateTime);
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
            }
        }
    }

我有一些评论,因为我尝试了不同的事情。但是,显示

的代码
GridViewRow editRow = gvReviewedPolicy.Rows[gvReviewedPolicy.EditIndex];
    string Emailed = editRow.Cells[7].Text;
    string UniqClient = editRow.Cells[1].Text;
    string UniqPolicy = editRow.Cells[3].Text;

当按下UPDATE按钮时,应该访问这些单元格中的值。但是,使用MessageBox.Show会变回空白。

任何人都知道如何在单击“编辑”后再单击默认的“更新”按钮来捕获这些值?

1 个答案:

答案 0 :(得分:0)

我曾经尝试通过实现DataGridView子类(使您能够访问所有内容)来使Winforms Datagrid过去可用于“直写”,但是由于出现了不可变的数据库和队列事务,因此我的访问方式DataGrid不能幸免于现代范式。如今,我倾向于支持ASP.NET MVC 5来“编辑”数据库。

无论如何,您是否考虑过连接数据源?您无需访问单元格即可。您可以使用类似

的连接进行更新

私有SqlDataAdapter daGrid =新的SqlDataAdapter();

使用这种方法,您必须自己填写详细信息,完整的代码由几个类组成,太大而无法发布,

    protected void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
        /// .. perform actions according to keyboard events ..
        /// .. for example below one ..
    }

    public override void UpdateAfterEditGrid(DataSet ds, DataGridView dataGridView1, bool DoRestoreCursor)
    {
    if (daGrid != null)
    {
        if (conn.State == ConnectionState.Closed) conn.Open();
        dataGridView1.EndEdit();
        try
        {
            if (ds == null)
            {
                //DataGridView dgv = dataGridView1;
                //Console.WriteLine("Go datasource update .. " + dgv[cColumnIndex, cRowIndex].Value);
                daGrid.Update((DataTable)dataGridView1.DataSource);
            }
            else daGrid.Update(ds);
            LoadGridRestoreCursor(dataGridView1, DoRestoreCursor);
        }
        catch { ErrorReporting.ErrorMessage("== cannot update this content =="); }
    }
}