interaksi kumpulan data dan tampilan kisi (memperbarui data)

Saya cukup baru di asp.net; hanya ingin memberi tahu kalian sebelum membaca pertanyaan saya. Saya membuat buku alamat dan menggunakan kumpulan data untuk menampilkan data dari database SQL saya dalam tampilan grid yang ada di halaman aspx. Saya memiliki kode ini sejauh ini

            SqlConnection conn = new SqlConnection(conectionstring);
            conn.Open();
            string sql = "SELECT * FROM Directorio";
            SqlDataAdapter myCommand = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            myCommand.Fill(ds);
            DataView source = new DataView(ds.Tables[0]);
            GridView1.DataSource = source;
            GridView1.DataBind();

Kode ini mengambil data dari database, mengisi dataset, dan menampilkannya di gridview. Pertanyaan saya adalah bagaimana saya bisa membuat perubahan pada tampilan grid, dan kemudian memperbarui kumpulan data sehingga saya bisa menerapkan perubahan dalam database SQL. Saya telah menemukan banyak tutorial, tetapi cara kerjanya berbeda. mereka menautkan database ke proyek dan tidak mengkodekan semua ini, saya ingin mempelajari cara melakukannya secara manual. Saya juga mencoba mengaktifkan pengeditan di properti tampilan kisi yang membuat kolom dengan tombol edit tetapi ketika saya mengkliknya, aplikasi mogok. terima kasih rekan-rekan programmer :)

PS: Saya mengerti Arsitektur ADO.NET


person itsmedavid    schedule 09.02.2012    source sumber


Jawaban (2)


Pada dasarnya, kontrol sumber data perlu mengatur perubahan karena ini rumit dalam konteks arsitektur asp.net.

Saya rasa saya tahu dari mana Anda berasal, dan saya benar-benar pernah ke sana - Anda mungkin menikmati artikel ini: http://msdn.microsoft.com/en-us/library/aa581776.aspx

person Aaron Anodide    schedule 09.02.2012
comment
Hai. terima kasih atas jawaban anda, tutorial itu terlihat sangat berguna, tapi sekali lagi kekhawatiran saya untuk tidak melakukannya secara manual masih ada, dan Anda mungkin bertanya-tanya mengapa saya tidak ingin melakukannya seperti itu, itu karena di proyek sebelumnya yang saya kembangkan di vb dan formulir windows Saya menggunakannya, dan membuat konflik saat mengakses database, secara manual. - person itsmedavid; 09.02.2012
comment
Mungkin yang terbaik dari kedua dunia adalah jika Anda melihat contoh ObjectDataSource msdn. microsoft.com/en-us/library/ms178538.aspx - person Aaron Anodide; 09.02.2012

Anda memiliki beberapa pilihan. Saya berasumsi Anda menggunakan formulir web dan asp.net vs menggunakan asp.net MVC.

Bergantung pada seberapa kuat proyek Anda atau bagaimana Anda berencana untuk mengimplementasikannya, Anda dapat menempuh beberapa cara. Jika Anda memiliki lapisan akses data, Anda dapat menggunakan EF (Entity Framework) untuk menangani pengambilan dan pengiriman data ke database. EF sangat bagus karena akan menangani banyak operasi CRUD untuk Anda di luar formulir web Anda. Bukan abstraksi penuh tetapi mengeluarkan sql dari kode Anda dan masuk ke lapisan terpisah/dapat dikelola.

Jika ini adalah proyek kecil atau sesuatu yang hanya Anda mainkan, Anda dapat memasukkan data kembali ke dalam tabel menggunakan ado/sql yang sama

public int CreateNewUser(string username, string password)
    {
        int insertUser = DatabaseUtilities.Perform_CRUD_Operation(
            String.Format(
                "INSERT INTO ContactsUser (UserName, Password) " +
                "VALUES ('{0}', '{1}',
                username, password),
            ConnectionString);
    }


//factored out the Perform operation for reuse in other classes you could do all this in one call 

public static int Perform_CRUD_Operation(string sqlStatement, string connectionString)
    {
        OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;" + connectionString);
        OleDbCommand cmd = new OleDbCommand(sqlStatement, con);

        try
        {
            con.Open();
            int affectedRows = cmd.ExecuteNonQuery();
            if (affectedRows == 1)
            {
                return 0;
            }
            else
            {
                return AFFECTED_ROWS_ERROR;
            }
        }
        catch (Exception)
        {
            return UNHANDLED_ERROR;
        }
        finally
        {
            con.Close();
        }
    } 

Ini di atas hanyalah sebuah contoh. Jika Anda melakukan sesuatu untuk kode produksi Saya sangat menyarankan EF atau penggunaan prosedur tersimpan. Menggunakan kode seperti di atas boleh saja untuk pengujian atau pembuktian konsep tetapi sangat rentan untuk injeksi sql, dan bisa sangat tidak aman.

Adapun tampilan grid tanpa melihat kode dari UI atau kode di belakangnya hampir tidak mungkin untuk memberikan saran tentang apa yang harus dilakukan atau di mana mencarinya.

person rlcrews    schedule 09.02.2012
comment
terima kasih banyak telah meluangkan waktu Anda untuk menjawab. Saya sangat menghargainya dan pasti akan menerima saran Anda. - person itsmedavid; 09.02.2012