2012-01-16 9 views
1

データグリッド内の列を編集しようとしていますが、単に編集を拒否しています。 editmodeを設定しましたが、まだ応答しません。私の唯一の結論は、私がバインドしているデータソースです。ここに私のコードの一部です:私は私のアプリを実行するとデータ型のセルを編集するvar型のデータソースを持つwinform

public partial class Example: Form 
{ 
    DataTable edtable = new DataTable(); 
    DbHelper db; 

    public Example() 
    { 
     InitializeComponent(); 
     db = new DbHelper("dbname", "dbid", "dbpassword"); 
     var cmd = db.GetCommand(
"Select ED.ID, ED.Name, ED.Code from EXAMPLETABLE ED Join (Select trim(code) as code, count(code) as codecount from exampletable group by trim(code)) X ON X.codecount > 1 and ED.Code like X.Code || '%'" 
     ); 
     edtable = db.ExeGetDataTable(cmd); 
     dataGridView1.DataSource = edtable; 
    }    
} 

、私のデータグリッドは、クエリを介して取得した内容が含まれていedtableが取り込まれます。しかし、私はそれらの値を編集することはできません。私はセルとその値を読み取るだけで私は具体的にeditmodeを編集するように設定していても、それをクリックします。

私のデータソースのためですか?もしそうなら、どうすれば私の値を編集可能にすることができますか?

ありがとうございます!

+1

次の場合、dataGridView1のプロパティを確認します。 'dataGridView1.EditMode = EditOnKeystrokeOrF2; dataGridView1.Enabled = true; dataGridView1.ReadOnly = false; 各列には があります。ReadOnly = false' – pistipanko

+0

私はこれをすべて行いました。私はかなり私のデータソースとは何かがあると確信していますが、私は確信していません:( – Newbie

+0

私はpistipankoに同意しますdefalutによって、WinFormsのDataGridViewはEditOnKeystrokeOrF2にデフォルト設定されています。 F2を押すか、値を上書きするだけで入力を開始します。 – Mohgeroth

答えて

0

あなたはあなたの最後のコメントでそれを得たと思います。データソースにバインドするときに、読み取り専用プロパティにバインドすると、またはReadOnlyまたはその他のプロパティが設定されている場合でも、DataGridViewのセルは読み取り専用になります。私はあなたが使用しているDataTableオブジェクトにバインドしていませんが、{ get; }プロパティを持つクラスオブジェクトにバインドすると、それらはグリッドでは読み取り専用であり、{ get; set; }プロパティは編集可能です。

グリッド内の値を編集すると、値がデータベース内で更新されると予想されますか?もしそうなら、単純なSELECTステートメントからオブジェクトを作成する以上のものが必要であると確信しています。これをどのように攻撃するかは、グリッドで編集された値に何が起こるかによって決まります。

+0

あなたは正しいです。私がしなければならなかったのは、** edtable **の列のReadonlyプロパティをfalseに設定し、残りは単に詩だけだった! – Newbie

+0

優れています。私の答えは受け入れられているとマークしてください。 –

+0

さらに詳しい説明(他の初心者向け)私が使用したコードは次のとおりです:edtable.Columns ["列名"]。ReadOnly = False – Newbie

関連する問題