2009-04-18 21 views
0

Wie kann ich ein bearbeitbares Grid mit Daten aus verschiedenen Tabellen aus MSSQL Server'05 einen Code hinter Funktion schreiben?GridView in ASP.NET 2.0

Ich habe verwendet:

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

Ich verstehe die Frage nicht. –

Antwort

0

Ich denke, das an die e Variable läuft darauf hinaus: Was es verweist?

Ich befürchte, dass es das EventArgs-Argument von Ihrer Page_Load-Methode ist (habe ich Recht?).

Um das zu tun, was Sie tun möchten, muss es sich auf eine Instanz eines GridView-Websteuerelements beziehen.

0

Ihre Frage ist mir nicht viel klar, aber vielleicht wird dies dazu beitragen:

eine gespeicherte Prozedur schreiben, um Daten aus mehreren Tabellen abrufen und Ihren Datensatz mit den Ergebnissen füllen, die Sie erhalten. Ihr Datensatz wird nun eine Tabelle mit allen Feldern enthalten, die von Ihrer gespeicherten Prozedur zurückgegeben werden, die offensichtlich aus verschiedenen Tabellen basierend auf Ihrer SQL-Abfrage stammt.

Binden Sie Ihr Raster mit dem Datensatz, den Sie zurück erhalten.

0

Es ist möglich, die DataRow zu manipulieren, bevor Sie sie an GridView binden. Auf diese Weise können Sie Änderungen an den Daten programmgesteuert vornehmen, ohne die SQL-Abfrage selbst zu ändern.

Zuerst erstellen Sie eine Kopie der DataRow. Dann fügen Sie zusätzliche Zeilen hinzu oder ändern die Werte von Spalten in den Zeilen. Dann rufen Sie EndEdit() und AcceptChanges() auf der DataRow auf, um sicherzustellen, dass Änderungen übernommen werden. Dann fügen Sie die geänderte Zeile mit ImportRow in die Tabelle des DataSet zurück, ändern den RowState in Added und rufen schließlich die Update-Methode des TableAdapter mit DataRow auf.

Hier ist ein Beispielcode aus meinen Notizen:

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(); 
}