0

私のプロジェクトでは、DGV にデータがない場合は更新しないようにコードを書きましたが、空の行をクリックするとデータがなくても、デフォルトで表示され、更新されます。ボタン、更新中です。問題を解決するのを手伝ってください。私が使用しているコードは次のとおりです。

private void btnUpdate_Click(object sender, EventArgs e)
{
    if (dataGridView2.SelectedCells.Count == 0 )
    {
        MessageBox.Show("There are no any records to update");
    }
    else
    {
        SqlConnection con = Helper.getconnection();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        con.Open();
        cmd.CommandType = CommandType.Text;
        string PrjName = txtPrjNmae.Text;
        string Description = txtPrjdescription.Text;
        DateTime Date = dateUpdate.Value;
        dateUpdate.Format = DateTimePickerFormat.Custom;
        dateUpdate.CustomFormat = "dd/MM/yy";
        string Size = txtPrjSize.Text;
        string Manager = txtPrjManager.Text;
        cmd.CommandText = "Update Projects set Description='" + Description + "', DateStarted='" + Date + "',TeamSize='" + Size + "',Manager='" + Manager + "' where ProjectName= '" + PrjName + "' ";
        MessageBox.Show("Project Details are updated");
        dataGridView2.Update();
        dataGridView2.Refresh();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    BindData3();            
}  
4

5 に答える 5

0

最初のセット

dataGridView2.AllowUserToAddRows = false

また

更新するたびに確認してください。

dataGridView2.Rows.Count > 0 

また

if(dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString() != " ")

// ここで更新します

于 2013-10-02T07:43:44.470 に答える
0

datagridview設定経由の最後の行をクリックして、ユーザーが新しい行を追加できないようにすることができますAllowUserToAddRows = false

于 2013-10-02T07:23:04.240 に答える
0

これをチェックして

dataGridView2.Rows.Count > 0

状態で

于 2013-10-02T07:25:39.213 に答える
0

チェックする代わりにif (dataGridView2.SelectedCells.Count == 0 )

これを行う

if( dataGridView2.Rows.Count > 0) {

}

これは、0 行を超える場合にのみ条件を実行します。

于 2013-10-02T07:48:34.317 に答える
0

ユーザーが ( grdiview ではなく)別のフォームを介して行を挿入できるようにしているため、最初にプロパティhideとしてデフォルトで表示される空の行が に設定されているため、このプロパティを に設定する必要があります。AllowUserToAddRowtruefalse

それでも、ユーザーが他の方法で空の行をグリッドに追加できるようにしている場合は、ユーザーが更新ボタンをクリックしたときにそれを検証する必要があります。私が考えることができる1つのアプローチは、

選択した行に のいずれかがあるかどうかを確認しmandatory cell valueます。ProjectName が必須の値であると仮定すると、次のようにロジックを記述できます。

selectedRow.Cells["ProjectName"]ここで ProjectName は列名です。

private void btnUpdate_Click(object sender, EventArgs e)
    {
       //Get the selected row
       DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];

       //Check if Project Name cell in the selected row null or empty
       if (string.IsNullOrWhiteSpace(selectedRow.Cells["ProjectName"].Value.ToString()))
        {
            MessageBox.Show("There are no any records to update");
        }
        else
        {

        }                      
    }   
于 2013-10-02T13:30:41.063 に答える