C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.2020 の関連記事表示

<< 0 >>
■2020  Re[2]: 困っています
□投稿者/ kisisuku -(2005/11/29(Tue) 15:35:34)

    分類:[VB.NET] 

    解決しました。
    ありがとうございました。
    また何かあったらお願いします。

記事No.1938 のレス / END /過去ログ2より / 関連記事表示
削除チェック/

■2020  リストボックスのソート処理
□投稿者/ けい -(2007/03/14(Wed) 10:23:35)

    分類:[C# (Windows)] 

    お世話になっております。

    C#で開発を行っているのですがリストボックスの
    ソート処理についてご質問させてください。


    リストボックスを二つ用意してリストボックスのプロパティでSortはTrueにしています。

    1.左のリストボックスにDBから取得した値(この時主キーでOrderByでソート)を表示しています。
    左リスト 右リスト
    00001
    00002 
    00003

    2.左のリストでデータを選択して、追加ボタンを押下した際に
      選択した行に対してリムーブとアッド行い、右のリストボックスに移動させます。(先頭行の場合)

    左のリスト 右のリスト
    00002  → 00001
    00003

    3.右のリストに移動した値を選択して、削除ボタンを押下した際に
      追加と同様にリムーブとアッドを行い、左のリストボックスに移動させます。
    左リスト 右リスト
    00001
    00002 
    00003

    リストボックスのソートプロパティで見た目上は問題ないのですが、ここから更に2の操作を行うと
    先頭の00001を選択したのにも関わらず右のリストボックスには00002が表示されてしまいます。
    ※ソートプロパティを使用しなければ見た目はソートされませんが選択した値を移動します。

    恐らくaddとRemoveの処理で配列のIndexがずれてしまったのではないかと思うのですが
    ずらさずにソートを行う方法があったらご教授の方宜しくお願い致します。


      
親記事 /過去ログ11より / 関連記事表示
削除チェック/

■2021  Re[1]: リストボックスのソート処理
□投稿者/ επιστημη -(2007/03/14(Wed) 10:40:51)
>
    > リストボックスのソートプロパティで見た目上は問題ないのですが、ここから更に2の操作を行うと
    > 先頭の00001を選択したのにも関わらず右のリストボックスには00002が表示されてしまいます。
    
    再現できません。ちゃんと期待通りに動作します。
    
        // 左から右へ
        private void LtoR_Click(object sender, EventArgs e) {
          int index = leftBox.SelectedIndex;
          if ( index >= 0 ) {
            rightBox.Items.Add(leftBox.SelectedItem);
            leftBox.Items.RemoveAt(index);
          }
        }
    
        // 右から左へ
        private void RtoL_Click(object sender, EventArgs e) {
          int index = rightBox.SelectedIndex;
          if ( index >= 0 ) {
            leftBox.Items.Add(rightBox.SelectedItem);
            rightBox.Items.RemoveAt(index);
          }
        }
    
記事No.2020 のレス /過去ログ11より / 関連記事表示
削除チェック/

■2022  Re[2]: リストボックスのソート処理
□投稿者/ けい -(2007/03/14(Wed) 11:58:30)
    > // 左から右へ
    > private void LtoR_Click(object sender, EventArgs e) {
    > int index = leftBox.SelectedIndex;
    > if ( index >= 0 ) {
    > rightBox.Items.Add(leftBox.SelectedItem);
    > leftBox.Items.RemoveAt(index);
    > }
    > }
    >
    > // 右から左へ
    > private void RtoL_Click(object sender, EventArgs e) {
    > int index = rightBox.SelectedIndex;
    > if ( index >= 0 ) {
    > leftBox.Items.Add(rightBox.SelectedItem);
    > rightBox.Items.RemoveAt(index);
    > }
    > }
    >
    επιστημηさん
    お早い返信ありがとうございます。
    教えて頂いたソースを試して見たところ
    「データソースプロパティを設定した時はItemsコレクションを変更することはできません。」
    と表示されました。

    現在
    dsListR.Tables["code"].Rows.Add(rightRow);
    dsListL.Tables["code"].Rows.Remove(leftRow);
    と言う記述なのですが、教えて頂いたやり方では出来ませんでした。

    データソースを使用している際は、Items.AddとRemoveは使用出来ないのでしょうか?
    説明がわかりにくくて申し訳ございませんが、宜しくお願い致します。
記事No.2020 のレス /過去ログ11より / 関連記事表示
削除チェック/

■2023  Re[3]: リストボックスのソート処理
□投稿者/ シャノン -(2007/03/14(Wed) 12:56:07)
>
    No2022 (けい さん) に返信
    > データソースを使用している

    そういうことは先に言う。
    で、ソートには DataView を使ってる?

    DataView をソートしても、DataTable 内の行の順番は変わりません(DataTable はソートされない)。
    そのため、ListBox の行番号と DataTable の行番号が一致しくなります。
    その整合性を取るカラクリを考えましょう。

    > Items.AddとRemoveは使用出来ないのでしょうか?

    エラーメッセージにも書いてある通り、できません。
    代わりに、今やっているように DataTable の行を追加・削除するか、DataView で非表示にしましょう。
記事No.2020 のレス /過去ログ11より / 関連記事表示
削除チェック/

■2024  Re[4]: リストボックスのソート処理
□投稿者/ けい -(2007/03/14(Wed) 13:37:26)
    > で、ソートには DataView を使ってる?
    DataViewは使用していません。
    今はListBoxのプロパティのSortをTrueにしているだけです。

    > DataView をソートしても、DataTable 内の行の順番は変わりません(DataTable はソートされない)。
    > そのため、ListBox の行番号と DataTable の行番号が一致しくなります。
    > その整合性を取るカラクリを考えましょう。

    >>Items.AddとRemoveは使用出来ないのでしょうか?
    >
    > エラーメッセージにも書いてある通り、できません。
    > 代わりに、今やっているように DataTable の行を追加・削除するか、DataView で非表示にしましょう。

    アドバイスありがとうございました。
記事No.2020 のレス /過去ログ11より / 関連記事表示
削除チェック/

■2025  Re[5]: リストボックスのソート処理
□投稿者/ 魔界の仮面弁士 -(2007/03/14(Wed) 16:25:46)
    No2024 (けい さん) に返信
    
    選択された内容を取得するときに、SelectedIndex を使っていませんか?
    
    DataRowView rowView = listBox1.SelectedItem as DataRowView;
    if (rowView == null) {
        label1.Text = "";
    } else {
        label1.Text = rowView.Row["Col1"].ToString();
    }
    
    
    int index = listBox1.SelectedIndex;
    if (index < 0) {
        label2.Text = "";
    } else {
        label2.Text = dataTable1.Rows[index]["Col1"].ToString();
    }
    
記事No.2020 のレス /過去ログ11より / 関連記事表示
削除チェック/

■2027  Re[6]: リストボックスのソート処理
□投稿者/ けい -(2007/03/14(Wed) 20:28:12)
    皆様のおかげで無事処理が出来ました。
    ありがとうございました。
記事No.2020 のレス / END /過去ログ11より / 関連記事表示
削除チェック/

■3744  萌えメールロリコレ
□投稿者/ リノン -(2007/05/22(Tue) 03:00:21)
>
記事No.2020 のレス /過去ログ13より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -