Bagaimana cara mengikat datatable baru ke gridview yang sudah memiliki datatable lama

Saya memiliki tampilan grid yang terikat ke datatable saat runtime. Menurut pilihan pengguna, kolom datatable dapat berubah dan kemudian saya perlu mengikat datatable ke tampilan grid yang sama. Jika pengguna melakukannya, sistem akan crash karena tampilan grid mencari nama kolom yang sama.

Bagaimana saya bisa membersihkan semua tampilan grid dan mengikat datatable baru lagi dan lagi?

inilah cara saya mengikat data. setiap kali nama kolom berubah

DataTable result = dt_to_result_bolge_kiyaslama(dt);
gv_kiyaslama.DataSource = result;
gv_kiyaslama.DataBind();

person Arif YILMAZ    schedule 12.03.2014    source sumber
comment
Cara termudah adalah dengan menginisialisasi ulang tampilan grid atau apakah saya salah memahami sesuatu?   -  person Lukas Häfliger    schedule 12.03.2014
comment
Apakah Anda menggunakan kolom yang dibuat secara otomatis di tampilan grid Anda, atau tidak?   -  person Andrew Backes    schedule 12.03.2014
comment
Bisakah Anda menunjukkan kode Anda kepada saya?   -  person Pragnesh Khalas    schedule 12.03.2014


Jawaban (1)


Anda mungkin mencari cara membuat ulang kolom Tampilan Grid saat run time. Artikel CodeProject.com ini mungkin bisa menjadi tiketnya: Cara membuat kolom secara dinamis dalam tampilan petak.

Beberapa contoh Kode ASP:

<asp:GridView ID="MyGrid" runat="server" AutoGenerateColumns="false">
    <Columns />
</asp:GridView>

Dan contoh metode C#:

public void RegenerateColumns(GridView grid, DataTable data, IDictionary<string, string> columnText)
{
    grid.Columns.Clear();

    foreach (DataColumn col in data.Columns)
    {
        grid.Columns.Add(new BoundField()
        {
            DataField = col.ColumnName,
            HeaderText = columnText.ContainsKey(col.ColumnName)
                ? columnText[col.ColumnName]
                : col.ColumnName
        });
    }
}

Sekarang untuk digunakan:

DataTable table = new DataTable();
table.Columns.Add(...); // add "NAME" column
table.Columns.Add(...); // add "DESCRIPTION" column

// Create mapping of column names to text visible to the user
Dictionary<string, string> cols = new Dictionary<string, string>()
{
    { "NAME", "Name" },
    { "DESCRIPTION", "Description" }
};

// Call method:
RegenerateColumns(MyGrid, table, cols);

// Rebind the data to the grid
MyGrid.DataSource = table;
MyGrid.DataBind();
person Greg Burghardt    schedule 12.03.2014
comment
ini menjelaskan cara mengikat grid secara dinamis. Saya bisa melakukannya dengan sukses, tetapi jika saya mengubah nama kolom dan mengikatnya lagi ke grid yang sama, maka crash karena mencari nama kolom yang lama - person Arif YILMAZ; 12.03.2014
comment
Artikel itu menjelaskan apa yang Anda inginkan. Saya akan memperbarui jawaban saya. - person Greg Burghardt; 12.03.2014
comment
itu bukan cara yang baik. Saya menantikan untuk menemukan fungsi seperti clear() - person Arif YILMAZ; 12.03.2014
comment
Ada fungsi clear: GridView.Columns.Clear() -- Ini membersihkan kolom pada grid. - person Greg Burghardt; 12.03.2014
comment
Saya tahu tetapi jika saya melakukan clear(), ia tidak menerima kolom tabel data kedua - person Arif YILMAZ; 12.03.2014
comment
Apakah Anda membaca postingan blog yang saya tautkan, atau melihat contoh kode yang saya posting? Setelah mengosongkan kolom, Anda harus membuatnya kembali secara terprogram. - person Greg Burghardt; 12.03.2014