- PR -

DATAGRIDで入力中のセルのデータをDATASETに反映したい

1
投稿者投稿内容
くろんすき
会議室デビュー日: 2004/04/06
投稿数: 14
投稿日時: 2004-04-29 06:25
こんにちわ。いつも大変参考にさせていただいています。
さて今回VB.NETでDATAGRIDで編集中のセルをDATASETに反映させたいのですが、
DBGRIDにDATASETをVIEWにてバインディングした状態です。
新規行は追加禁止にしてあります。
この状態で編集中のセルから別なコントロールなどにマウスなどで
移った場合最後のセルの値がDATASETに反映されない状態に
になっています。
.NET初心者ゆえどうにもこうにもうまくいきません。皆様の良い知恵をお貸しください。よろしくお願いいたします。


[ メッセージ編集済み 編集者: くろんすき 編集日時 2004-04-29 06:25 ]
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-29 11:32
諸農です。

引用:

くろんすきさんの書き込み (2004-04-29 06:25) より:
この状態で編集中のセルから別なコントロールなどにマウスなどで
移った場合最後のセルの値がDATASETに反映されない状態に
になっています。



対象にしているカラムのDataTypeは何にしているのでしょうか。
また、グリッドで入力しようとしているデータはそのタイプに合
致していますか?

引用:

.NET初心者ゆえどうにもこうにもうまくいきません



初心者と自認されるのであればなおさら、再現性のある手順、再現性
を確認できる最小限のコードなどの提示が必要です。
最小限のコードを自分なりにまとめているうちに解決できる場合もあ
りますので、まとめる事は問題解決への有効な手段のひとつといえます。

以下のコードではデータテーブルを作成し、テーブルからデータビュ
ーを取り出しグリッドにセットしています。
フォームにはもう一つのグリッドとテキストボックスが用意されてお
り、テキストボックスにフォーカスが移動したタイミングでデータテ
ーブルの内容を別のグリッドで表示しています。
データタイプの違うデータ入力を行った時(第3カラムに文字列を入
力するなど)にはテーブルに反映はされませんが、予定されているタ
イプのデータ入力の場合は、期待通りにテーブルに反映されるという
結果を得る事が出来ました。
#C#で申し訳ないm(__)m

コード:
DataTable t = null;
private void Form1_Load(object sender, System.EventArgs e)
{
    textBox1.Text = "";

    t = new DataTable("Sample");
    t.Columns.Add("Col1",typeof(string));
    t.Columns.Add("Col2",typeof(string));
    t.Columns.Add("Col3",typeof(int));
    int i = 0;
    DataRow r;
    while (i < 20)
    {
        r = t.NewRow();
        r["Col1"] = 5.ToString();
        r["Col2"] = i.ToString();
        r["Col3"] = i * 3;
        t.Rows.Add(r);
        i++;
    }

    DataView dv = new DataView(t);
    dv.AllowNew = false;
    dataGrid1.DataSource = dv;
}

private void textBox1_Enter(object sender, System.EventArgs e)
{
    dataGrid2.DataSource = t;
}





_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
くんちん
常連さん
会議室デビュー日: 2002/10/07
投稿数: 46
投稿日時: 2004-04-30 02:41
編集中のセルをDATASETに反映させたいとの事で、下記のようではうまくいきませんか?
データテーブルにKeyが存在するという事で更新部分のみ記載させて頂きます。
まと違いでしたら申し訳ございません。


Dim dr As DataRow
Dim objkey As Object(複数Keyの場合:Dim objkey(1) As Object)

'編集中のKeyセット
objkey = キーデータ
dr = [データテーブル名].Rows.Find(objkey)

dr.BeginEdit()
dr("フィールド名") = "編集中データ"
dr.EndEdit()

くろんすき
会議室デビュー日: 2004/04/06
投稿数: 14
投稿日時: 2004-04-30 05:52
Jubeiさん、くんちんさん
ありがとうございます。
いろいろ突き詰めていった結果、ENTERキーにてセルを強制的に移動してた
ロジックがわるさをしていました。
Jubeiさん曰く「最小限のコードを自分なりにまとめているうちに解決できる場合もあ
ります。」
まさしくそのとおりでした。
大変失礼しました。ポカミスをやらかしてしまいました。
1

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