2013-05-01 9 views
2

Je l'ai fait cette chose et il affiche une erreur Index was out of range. Must be negative and non zero value. Dans le code suivant,Comment ajouter manuellement les données dans Gridview

Dim index_flag as Integer = 0 
GridView1.Rows(index_flag).Cells(1).Text = ds.Tables(0).Rows(index_flag).Item("curr_datetime").ToString 
GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_id").ToString 
GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_name").ToString 
GridView1.Rows(index_flag).Cells(3).Text = ds.Tables(0).Rows(index_flag).Item("dc_volt").ToString 
+0

Je pense que 'GridView1.Rows (index_flag) .Cells (0)' est manquée ... – Sachin

+0

vous devez vérifier 'Si ds.Tables.Count> 0 AndAlso ds.Tables (0) .Rows .Count> 0 Then' – Sachin

+0

@ Sac Pourquoi? S'il vous plaît expliquer brièvement? –

Répondre

0

Pourquoi essayez-vous d'ajouter chaque ligne de la table de données à la GridView ? Dans la mesure du possible, utilisez GridView.DataSource = DataTable et GridView. DataBind(). Ce qui fera l'affaire d'ajouter les données de la table de données à la vue de la grille.

+0

s'il vous plaît vérifier mon code complet là http://stackoverflow.com/questions/16312953/load-grid-data-from-data-base-to-gridview-without-using-binding-method –

+0

et j'ai besoin d'ajouter de la valeur dans chaque cellule car certaines cellules dépendent de certaines valeurs de cellules –

+0

Si vous devez l'ajouter de cette façon, veuillez vérifier la réponse de @Mandeep Singh. Bien que je vous conseille toujours de ne pas le faire de cette façon. Il y aurait toujours un moyen de rendre le contenu des cellules plus dépendantes de certaines conditions. Cheeers! – Abhi

0

Il vous manque le GridView1.Rows.Add()

Dim index_flag as Integer = 0 
GridView.Rows.Add() 
     GridView1.Rows(index_flag).Cells(1).Text = ds.Tables(0).Rows(index_flag).Item("curr_datetime").ToString 

     GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_id").ToString 
     GridView1.Rows(index_flag).Cells(2).Text = ds.Tables(0).Rows(index_flag).Item("site_name").ToString 
     GridView1.Rows(index_flag).Cells(3).Text = ds.Tables(0).Rows(index_flag).Item("dc_volt").ToString 

UPDATE

Pour Asp GridView vérifier ce lien J'ai examiné votre question, vous pouvez vérifier sur ce lien http://www.codeproject.com/Articles/467788/Dynamically-adding-and-deleting-rows-from-ASP-NET

+0

@Mr. Singh .... Rows.Add() est la propriété de DataGridview –

+0

J'ai examiné votre question, vous pouvez vérifier sur ce lien http://www.codeproject.com/Articles/467788/Dynamically-adding-and-deleting- rows-from-ASP-NET –

6

Je pense que vous devriez utiliser datatable. Préparez votre datatable selon vos besoins et de lier cette datatable à votre point de vue de la grille ici est l'exemple de C#, mais vous pouvez le faire même chose avec la syntaxe de VB.NET

 DataTable dt = new DataTable(); 
     dt.Columns.Add("sr_no"); 
     dt.Columns.Add("item_name"); 
     dt.Columns.Add("item_id"); 
     dt.Columns.Add("qty"); 
     dt.Columns.Add("rate"); 
     dt.Columns.Add("total"); 

     var dr = dt.NewRow(); 
     dr["sr_no"] = txtSr.Text; 
     dr["item_name"] = ddlItem.SelectedItem.Text; 
     dr["item_id"] = ddlItem.SelectedValue; 
     dr["qty"] = txtQty.Text; 
     dr["rate"] = txtRate.Text; 
     dr["total"] = int.Parse(txtQty.Text) * int.Parse(txtRate.Text); 

     dt.Rows.Add(dr); 
+1

Vous devriez aussi 'GridView1.DataSource = dt;' – pbies

0

En ajouter manuellement les valeurs de zone de texte à gridview la méthode suivante est facile. essayez cette

Code

protected void Button1_Click(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 
     DataColumn dc = new DataColumn(); 

     if (dt.Columns.Count == 0) 
     { 
      dt.Columns.Add("Title1", typeof(string)); 
      dt.Columns.Add("Title2", typeof(string)); 
     } 

     DataRow NewRow = dt.NewRow(); 
     NewRow[0] = TextBox1.Text; 
     NewRow[1] = TextBox2.Text; 
     dt.Rows.Add(NewRow); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 
2

S'il vous plaît essayer, comment il vous aidera.

DataTable dt; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     dt = new DataTable(); 
     MakeDataTable(); 
    } 
    else 
    { 
     dt = (DataTable)ViewState["DataTable"]; 
    } 
    ViewState["DataTable"] = dt; 
} 

private void MakeDataTable() 
{ 
    dt.Columns.Add("Name"); 
    dt.Columns.Add("Number"); 
} 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    AddToDataTable(); 
    BindGrid(); 
} 

private void AddToDataTable() 
{ 
    DataRow dr = dt.NewRow(); 
    dr["Name"] = txtName.Text; 
    dr["Number"] = txtNumber.Text; 
    dt.Rows.Add(dr); 
} 

private void BindGrid() 
{ 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
} 
Questions connexes