- PR -

変更したSQL文で,DataGridの特定の列を表示/非表示に切り替えたい(できた)

投稿者投稿内容
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-10-25 20:28
zen73です。
次のコードで試してみました。(C#でやってます)
コード:
System.Data.DataTable;
obj = dataSet1.住所録.Copy();
obj.Columns.RemoveAt(4);


エラーにはならなかったのですが,4列目は表示されたままでした。
2行目の私の書き方に問題があるようです。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-10-25 21:03
引用:

ZEN73さんの書き込み (2004-10-25 20:28) より:
zen73です。
次のコードで試してみました。(C#でやってます)
コード:
System.Data.DataTable;
obj = dataSet1.住所録.Copy();
obj.Columns.RemoveAt(4);


エラーにはならなかったのですが,4列目は表示されたままでした。
2行目の私の書き方に問題があるようです。




その後に、[DataGridオブジェクト].DataSource = obj;
とやるといいかと思います。
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-10-25 22:48
NAL-6295さんには,親切に教えていただいてとても感謝しています。
引用:

その後に、[DataGridオブジェクト].DataSource = obj;
とやるといいかと思います。


引用:

DataGridのDataSourceに設定してあげれば、そのように動作します。


申し訳ありません,読み落としていました。うまく動作しました。ちょっと,感激!
この続きは,明日書きます。とりあえずはお礼まで。
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-10-26 05:42
引用:
表示する項目を変化させる度に既に取得している
DataTableをコピーすることで,毎回SQLを発行しなく
ても,項目の表示が変わると思います。


 教えていただいたコードを書く場所が違うと思ってます。
まるで幼稚園児みたいで恥ずかしいのですが,一度私がい
ま実際に書いているコードを見ていただけないでしょうか。
これでは,<削除した列の戻し>もうまくいきません。


[ メッセージ編集済み 編集者: ZEN73 編集日時 2004-10-26 11:44 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-10-26 08:51
NAL-6295です。

自分が書いたコードが、どういう意味を持って、どのようなタイミングで、どのように動作しているのか自分で勉強して理解したほうが宜しいかと思います。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-10-26 10:44
こんにちは。

>一度私がい ま実際に書いているコードを見ていただけないでしょうか

って、デバッグお願いします。に聞こえます。

問題を切り分けて上手く行かないポイントを絞って質問した方がいいと思います。

先ず、元になるDataTableを作成して必要な列のみを別のDataTableにコピーしてそれをDataGridのデータソースにしてもいいし、列の表示・非表示だけならDataGridTableStyleも使えます。Excelのエクスポートがあるなら前者がいいでしょうし、両者を適宜組み合わせても・・。

ADO.netならExcelシートからDataTableが作成出来ますから、ここでも元データのDataTableからExcelシートで選択したDataTableにデータを追加とか出来ます。
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-10-26 11:39
引用:

NAL-6295の書きこみより:

自分が書いたコードが、どういう意味を持って、どのようなタイミングで、
どのように動作しているのか自分で勉強して理解したほうが宜しいかと思
います。


引用:

とっとさんの書き込み (2004-10-26 10:44) より:
って、デバッグお願いします。に聞こえます。
問題を切り分けて上手く行かないポイントを絞って質問した方がいいと思います。


 反省しています。あまりにも皆さんに頼りすぎていました。
 しばらくは、自分なりに考えてみたいと思ってます。大変失礼なことを
してしまいました。お詫びします。
 コードは消去させていただきます。
ZEN73
常連さん
会議室デビュー日: 2003/03/10
投稿数: 43
投稿日時: 2004-10-26 19:15
ZEN73です。
うまく解決できたことを報告させていただきます。
NAL-6295さん,とっとさんありがとうございました。
特にNAL-6295さんには,ご親切にも逐次ご回答をいただき,感謝しています。
他意はなかったのですが,途中,失礼に当たることを申し上げましたことにも
重ねてお詫び申し上げます。
 これからも,よろしくお願いします。
コード:
private void arrayCBox_ChekedChanged(object sender, EventArgs e)
{
    DataTable dtMeibo;
    dtMeibo = dsMeibo1.生徒名簿.Copy();

    if(checkBox1.Checked == false) dtMeibo.Columns.RemoveAt(1); 
    if(checkBox2.Checked == false) dtMeibo.Columns.RemoveAt(3); 
    if(checkBox3.Checked == false) dtMeibo.Columns.RemoveAt(4); 
    if(checkBox4.Checked == false) dtMeibo.Columns.RemoveAt(5); 
    if(checkBox5.Checked == false) dtMeibo.Columns.RemoveAt(6); 
    if(checkBox6.Checked == false) dtMeibo.Columns.RemoveAt(7); 
    if(checkBox7.Checked == false) dtMeibo.Columns.RemoveAt(8);
 
    dataGrid1.DataSource = dtMeibo;
}



スキルアップ/キャリアアップ(JOB@IT)