2017-03-17 20 views
-1
int Row=0; 
Row = PurchaseGridView.Rows.Count; 
PurchaseGridView.Rows[Row].Cells[0].Text = ProductNameDropDown.SelectedValue.ToString(); 
PurchaseGridView.Rows[Row].Cells[1].Text = ProductNameDropDown.SelectedIndex.ToString(); 
PurchaseGridView.Rows[Row].Cells[2].Text = ProductPriceTxtBox.Text; 
PurchaseGridView.Rows[Row].Cells[3].Text = QuantityTxtBox.Text; 
PurchaseGridView.Rows[Row].Cells[4].Text = NetPriceTxtBox.Text; 

上記のようにgridviewに値を追加していますが、エラーが発生します。asp.netのgridview行にtexbox値を追加

エラー:インデックスが範囲外です。負でなく、コレクションのサイズより小さくなければなりません。 パラメータ名:インデックス

+0

何を試してみましたか? [最小、完全、かつ、確認可能な例](https://stackoverflow.com/help/mcve) – Dec

+0

を入力してください。新しい車が欲しいです。その後、新しい家。しかし、SOはコード作成サービスではありません。何を試しましたか?あなたがどこかにいると、私たちはあなたを助けることができます。 – VDWWD

+0

i今すぐコードを追加してください。 – Abubakar

答えて

0

あなたはあなたのコード内のいくつかの基本的なエラーがあります:あなたは存在しないので、あなたは外のインデックスを取得している新しいインデックスを指すようにCountを使用している

  1. を範囲。
  2. asp.netグリッドビューに行を直接追加することはできません。あなたはデータバインディングを通してそれを行う必要があります。ここでは一例です:あなたは

    DataTable dt = new DataTable(); 
    DataColumn dc = new DataColumn("ProductNameSelectedValue", typeof(string)); 
    DataColumn dc = new DataColumn("ProductNameSelectedIndex", typeof(int)); 
    .. 
    Rest of you columns 
    .. 
    
    DataRow dr = dt.NewRow(); 
    dr["ProductNameSelectedValue"] = ProductNameDropDown.SelectedValue.ToString(); 
    dr["ProductNameSelectedIndex"] = ProductNameDropDown.SelectedIndex; 
    .. 
    Assign the rest of the columns 
    .. 
    
    dt.Rows.Add(dr); 
    
    gv.DataSource = dt; 
    gv.DataBind(); 
    
+0

このコードを呼び出すたびに、グリッドビューに新しい行が追加されますが、以前のデータはなくなります。以前のレコードを保存して、前のレコードの隣に新しいレコードを保存するにはどうすればいいですか? – Abubakar

+0

あなたはクラスにフィールドとしてdatatableを格納し、どこかで初期化してください(おそらくctorかもしれません)、このメソッドに行の追加だけを残す必要があります –

関連する問題