-2

オブジェクト参照がオブジェクト インスタンスに設定されていません。

これは、グリッド ビューから .. 行を削除しようとしているときに発生するエラーです。

これは .. page_ load にあります

gvDetails.DataSource =myBl.DeleteAllCountry(int.Parse(gvDetails.SelectedRow.ToString()));

データ アクセス層で

   public DataTable DeleteCountry(int country_id)
    {
        DataTable dltcontry = new DataTable();
        SqlConnection con = new SqlConnection(@"Data Source=a8-pc\sqlexpress;Integrated Security=True");
        SqlDataAdapter da;
        try
        {
            SqlCommand cmd = new SqlCommand();
            cmd.connection= con;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "sp_DeleteCountry";
            con.Open();
            da = new SqlDataAdapter(cmd);
            cmd.Parameters.AddWithValue("country_id", @country_id);
            cmd.ExecuteNonQuery();
            da.Fill(dltcontry);
            con.Close();
        }

ビジネス層では、コードは次のようになります

  public DataTable DeleteAllCountry(int country_id)
  {
     return mydtLayer.DeleteCountry(country_id);
  }
4

1 に答える 1

0

最初に修正する必要があるのは、コマンドへの接続を設定する必要があることです

cmd.Connection =con;

またはコンストラクターで以下のように

 SqlCommand command = new SqlCommand(
            queryString, connection);

別の問題は、選択gvDetails.SelectedRowした値を int 値に変換しようとすることです

gvDetails.selectedRows.Count選択した行の値を取得する前に確認してください

選択がある場合は、以下のように country_id 列のセル値を取得できます

 gvDetails.SelectedRow.cells("country_id").Text

を使用してこれを int 値に変換できint.TryParseます。成功した場合は、BL 関数に送信してレコードを削除します。

于 2013-06-11T05:28:31.647 に答える