/ / कैसे एक नए datatable को एक ग्रिडव्यू से बांधना है, जिसमें पहले से ही एक पुरानी datatable है - c #, asp.net, ग्रिडव्यू, डेटा योग्य

एक ग्रिडव्यू के लिए एक नया डेटाटेबल कैसे बांधें, जिसमें पहले से ही पुराना डेटाटेबल है - सी #, एएसपीनेट, ग्रिडव्यू, डाटाटेबल

मेरे पास एक ग्रिडव्यू है जो एक डिटैटेबल से जुड़ा हैचलने के समय पर। उपयोगकर्ता के चयन के अनुसार, डेटाटेबल के कॉलम बदल सकते हैं और फिर मुझे उसी ग्रिडव्यू के लिए डेटाटेबल को बांधने की आवश्यकता है। यदि उपयोगकर्ता ऐसा करता है, तो सिस्टम क्रैश हो जाता है क्योंकि ग्रिडव्यू समान कॉलम नामों के लिए दिखता है।

मैं सभी ग्रिडव्यू को कैसे साफ कर सकता हूं और एक नए डेटाटेबल को बार-बार बांध सकता हूं?

यह है कि मैं डेटा को कैसे बांधता हूं। हर कॉलम के नाम बदल रहे हैं

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

उत्तर:

उत्तर № 1 के लिए 1

आप देख सकते हैं कि रन टाइम में ग्रिड व्यू कॉलम को फिर से कैसे जेनरेट करना है। यह CodeProject.com लेख टिकट हो सकता है: ग्रिड दृश्य में गतिशील रूप से कॉलम कैसे बनाएं.

कुछ नमूना ASP कोड:

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

और एक नमूना सी # विधि:

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

अब उपयोग करने के लिए:

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