私はリストを持っています。これをBindingListに変換してBindingSourceに入れ、DataGridViewにバインドして、ユーザーが印刷するJobItemを選択できるようにします。 DataGridViewにはButtonColumnがあり、ユーザーはJobItemを選択し、JobItemがサーマルプリンタに印刷するButtonColumnをクリックします。CでDataGridViewからビジネスオブジェクトを引き出す
私の問題は、選択したビジネスオブジェクトをDataGridViewからプルする構文を取得できないため、印刷機能に送信できるということです。
これは私が現在しようとしているものです:
BusinessObjects.JobItem row = dgJobItems.SelectedRows[e.RowIndex].DataBoundItem;
は、これは私のコードの残りの部分である:
DataGridViewButtonColumn btnPrint = new DataGridViewButtonColumn();
btnPrint.Text = "Print";
btnPrint.Name = "bPrint";
btnPrint.UseColumnTextForButtonValue = true;
dgJobItems.Columns.Add(btnPrint);
private void dgJobItems_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgJobItems.Columns[e.ColumnIndex].Name == "bPrint")
{
BusinessObjects.JobItem row = dgJobItems.SelectedRows[e.RowIndex].DataBoundItem;
}
}
JobItem:
public class JobItem
{
public int jobNumber { get; set; }
public string serialNumber { get; set; }
public string modelNumber { get; set; }
public int quantity { get; set; }
public string description { get; set; }
public JobItem()
{
}
}
申し訳ありませんが...私を得ます私が理解できない以下のエラー:
ArgumentOutOfRangeExceptionが処理されていません mscorlib.dllで 'System.ArgumentOutOfRangeException'型の未処理の例外が発生しました
追加情報:インデックスが範囲外でした。負でなく、コレクションのサイズより小さくなければなりません。
間違いではないですか?あなたは選択された行を持っているようです...何が欠けていますか? – JohnG
私はめったにフロントエンドのものをやることはほとんどないので、これらのケースについては正確にこの質問にhttp://stackoverflow.com/questions/3577297/how-to-handle-click-event-in-button-column-in-datagridviewを主演しました。忘れる。これはあなたの問題thoへの答えではありません。しかし、通常、私の問題は間違ったイベントに結びついています。いずれにしても、そのボタンからオブジェクトIDを取得し、フロントエンドから印刷するためにデータを信頼するのではなく、対応するオブジェクトを送信することです。 – Rostol
@JohnG申し訳ありません...はい、私はエラーが発生しました。私はそれを加えた。 ArgumentOutOfRangeExceptionは、mscorlibというdllファイルです。 dll。 –