2017-03-17 39 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控件上面一樣,但它給錯誤。添加texbox值gridview的行asp.net

錯誤:索引超出範圍。必須是非負數且小於集合的大小。 參數名:指數

+0

你嘗試過什麼?請提供[最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve) – Dec

+0

而且我想要一輛新車。之後,一個新的房子。但是SO不是代碼寫入服務。你有什麼嘗試?如果你被困在某個地方,我們可以幫你。 – VDWWD

+0

我現在添加代碼請指導我。 – Abubakar

回答

0

你在你的代碼的一些基本錯誤:

  1. 您正在使用Count爲指向不存在的,因此你所得到的指數走出了一條新的索引範圍。
  2. 您無法直接將行添加到asp.net gridview。你必須通過數據綁定來完成。這裏有一個例子:

    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

您將不得不將數據表存儲在類中的字段中,將它初始化到某處(可能可能),並且只有添加的行保留在此方法中 –