2009-04-18 10 views
0

Comment puis-je remplir une grille modifiable avec des données provenant de différentes tables de MSSQL Server'05 en écrivant un code derrière la fonction ???GridView dans ASP.NET 2.0

Je l'ai utilisé:

Dim conn As New SqlConnection(conn_web) 
    Dim objCmd As New SqlDataAdapter(sql, conn) 
    Dim oDS As New DataSet 

    objCmd.Fill(oDS, "TAB") 

    Dim dt As DataTable = oDS.Tables(0) 
    Dim rowCount As Integer = dt.Rows.Count 
    Dim dr As DataRow = dt.NewRow() 
    If rowCount = 0 Then 
     e.DataSource = Nothing 
     e.DataBind() 
     e.Focus() 

    Else 
     e.DataSource = dt 
     e.DataBind() 
    End If 
+2

Je ne comprends pas la question. –

Répondre

0

Je pense que cela se résume à la variable e: Comment est-ce référencement?

Je crains que ce soit l'argument EventArgs de votre méthode Page_Load (ai-je raison?). Pour faire ce que vous essayez de faire, il doit faire référence à une instance d'un contrôle Web GridView.

0

Votre question est peu clair pour moi, mais peut-être cela vous aidera:

Ecrivez une procédure stockée pour extraire des données de plusieurs tables et remplir votre ensemble de données avec les résultats que vous obtenez. Maintenant, votre ensemble de données aura une table avec tous les champs retournés par votre procédure stockée, qui proviendra évidemment de différentes tables basées sur votre requête SQL.

Liez votre grille à l'ensemble de données que vous récupérez.

0

Il est possible de manipuler le DataRow avant de le lier à GridView. Cela vous permet de modifier par programmation les modifications que vous souhaitez apporter aux données sans modifier la requête SQL elle-même.

D'abord, vous créez une copie du DataRow. Ensuite, vous ajoutez des lignes supplémentaires ou modifiez les valeurs des colonnes dans les lignes. Ensuite, vous appelez EndEdit() et AcceptChanges() sur le DataRow pour vous assurer que les modifications sont appliquées. Ensuite, vous ajoutez la ligne modifiée dans la table du DataSet en utilisant ImportRow, modifiez RowState en Added, et enfin appelez la méthode Update d'un TableAdapter en utilisant le DataRow.

Voici quelques exemples de code de mes notes:

try 
{ 
    DataSet objDataSet = new DataSet(); 
    SqlConnection objSqlConnection = new SqlConnection(); 
    objSqlConnection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
    string strSQL = "SELECT * FROM table WHERE OrderDate = '2008.10.21' AND OrderSequence = 1;"; 
    SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter(strSQL, objSqlConnection); 
    objSqlDataAdapter.Fill(objDataSet); 

    // Create a copy of the DataRow 
    DataRow drOrders = objDataSet.Tables[0].Rows[0]; 
    // Change the value of some columns to avoid duplicate primary key 
    drOrders["OrderDate"] = DateTime.Now.ToString("yyyy.MM.dd"); 
    drOrders["OrderSequence"] = 15; 
    // Call EndEdit() and AcceptChanges() on the DataRow to ensure changes are applied 
    drOrders.EndEdit(); 
    drOrders.AcceptChanges(); 
    // Add the modified row back into the DataSet's table using ImportRow 
    objDataSet.Tables[0].ImportRow(drOrders); 
    // Change the RowState to Added 
    objDataSet.Tables[0].Rows[1].SetAdded(); 
    // Call a TableAdapter's Update method using the DataRow 
    dsOrderTableAdapters.DetailFareTableAdapter dfta = new dsOrderTableAdapters.DetailFareTableAdapter(); 
    dfta.Update(objDataSet.Tables[0].Rows[1]); 

    lblMessage.Text = "The row has been copied!"; 
} 
catch (Exception ex) 
{ 
    lblErrorMessage.Text = ex.ToString(); 
}