प्रोग्रामेटिक रूप से datagridview में एक नई पंक्ति कैसे जोड़ें


157

यदि पंक्ति में जोड़ें DataTable

DataRow row = datatable1.NewRow();
row["column2"]="column2";
row["column6"]="column6";
datatable1.Rows.Add(row);

कैसे के बारे में DataGridView??


2
आप डेटाटेबल के डेटाट्रोस को डेटाटेबल के बराबर सेट करके डेटाटेबल के डेटा को जोड़ सकते हैंdatagridview1.DataSource = yourDataTable
जोनाथन वैन डैम

जवाबों:


248

तुम कर सकते हो:

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
yourDataGridView.Rows.Add(row);

या:

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells["Column2"].Value = "XYZ";
row.Cells["Column6"].Value = 50.2;
yourDataGridView.Rows.Add(row);

दूसरा रास्ता:

this.dataGridView1.Rows.Add("five", "six", "seven","eight");
this.dataGridView1.Rows.Insert(0, "one", "two", "three", "four");

प्रेषक: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx


28
धन्यवाद, अगर मेरे डेटाग्रिड्यू में कोई पंक्तियाँ नहीं हैं, तो मैं पंक्ति कैसे जोड़ सकता हूँ?
LK Yeung

3
@DavidYeung अच्छी तरह से उस मामले में एमजीए से जवाब आपकी मदद कर सकता है, आपका डेटा स्रोत क्या है? क्या यह एक व्यावहारिक है? यदि ऐसा है तो आप पंक्ति को डिटैटेबल में जोड़ सकते हैं और फिर डेटा स्रोत को रीफ्रेश कर सकते हैं
हबीब

7
जैसा कि आपने किया था, आप सीधे किसी कॉलम का संदर्भ नहीं दे सकते: पंक्ति। घंटियाँ ["कॉलम 2"]। मान = "XYZ"; ... आपको पहले इंडेक्स देखना होगा: row.Cells [yourDataGridView.Columns ["Column2"]। Index] .Value = "XYZ";
तैज

2
आदर्श रूप में, आप को क्लोन चाहिए RowTemplateकी DataGridView। जब आप अलग-अलग पंक्तियों में अलग-अलग शैली रखते हैं, तो यह एक समस्या बन जाती है DataGridView
एंथनी

7
लगभग 20 समाधानों को पढ़ने के बाद (Google द्वारा पाया गया) यह पहला ऐसा तरीका है जिसे मैं समझता हूं।
C4d

49

ऐशे ही:

var index = dgv.Rows.Add();
dgv.Rows[index].Cells["Column1"].Value = "Column1";
dgv.Rows[index].Cells["Column2"].Value = 5.6;
//....

धन्यवाद, यह वास्तव में अच्छी तरह से काम करता है यदि आपके पास पाठ की सरल संपादन योग्य सूची के लिए एक साधारण एकल स्तंभ DataGridView है।
बॉब मोस

इस मामले में यह बहुत अच्छा काम करता है जब आपके पास ग्रिड दृश्य को सौंपा गया कोई डेटा स्रोत नहीं होता है
झाबर

जब नियंत्रण डेटा-बाउंड होता है तो पंक्तियों को प्रोग्रामग्रुप डेटाग्रिड्यू के पंक्तियों के संग्रह में जोड़ा नहीं जा सकता है।
डार्थ सुक्खू

39

कहते हैं कि आपके पास एक डेटाग्रिड्यू है जो एक डेटासेट के लिए बाध्य नहीं है और आप प्रोग्राम को नई पंक्तियों को पॉप्युलेट करना चाहते हैं ...

यहाँ आप इसे कैसे करते हैं।

// Create a new row first as it will include the columns you've created at design-time.

int rowId = dataGridView1.Rows.Add();

// Grab the new row!
DataGridViewRow row = dataGridView1.Rows[rowId];

// Add the data
row.Cells["Column1"].Value = "Value1";
row.Cells["Column2"].Value = "Value2";

// And that's it! Quick and painless... :o)

3
+1: यह एकमात्र समाधान है जो वास्तव में स्तंभ नामों का उपयोग करता है जैसा कि परिभाषित किया गया है datagridview.Columns.Add("columnname"), एक DataTable की आवश्यकता नहीं है, और एक मुस्कान के साथ समाप्त होता है
रोलांड

32

ऐशे ही:

 dataGridView1.Columns[0].Name = "column2";
 dataGridView1.Columns[1].Name = "column6";

 string[] row1 = new string[] { "column2 value", "column6 value" };
 dataGridView1.Rows.Add(row1);

या आपको ऐसे मूल्यों को सेट करने की आवश्यकता है जो व्यक्तिगत रूप से उचित उपयोग करें .Rows(), जैसे:

 dataGridView1.Rows[1].Cells[0].Value = "cell value";

1
धन्यवाद। यदि डेटाग्रिडव्यू में 30 कॉलम हैं, लेकिन मैं अभी कॉलम 2 और कॉलम 6 में मूल्य जोड़ना चाहता हूं और बाकी रिक्त या रिक्त रखें। मैं यह कैसे कर सकता हूँ??
लालकृष्ण येउंग

1
@DavidYeung, सुनिश्चित करें कि आप कर सकते हैं dataGridView1.Rows[1].Cells[0].Value = "cell value":;
महमूद गमाल

1
dataGridView.Rows.Add (null, 2, null, null, null, 6);
MrFox

int गयी .RowIndex = dataGridViewRows.Add (); var addRow = dataGridViewRows [addRowIndex]; अब सभी मान डिफ़ॉल्ट मान से भर गए हैं, आपको केवल उन कक्षों को बदलना होगा जो डिफ़ॉल्ट नहीं हैं: गयीं .ow.Cells [column2.Index] .Value = myValue; (मान लिया जा रहा है कि स्तंभ 2 एक डाटाग्रिड्यूकोल्यूमेंट है)
हैराल्ड कोप्पुलसे

24

डीजीवी में एक पंक्ति के साथ कोई नई पंक्ति जोड़ना ऐड () के साथ कोई भी डेटा डालने (या टैग प्रॉपर्टी में ऑब्जेक्ट को बाइंड करने ) से पहले सिलेक्शन चेंज किए गए इवेंट को बढ़ाता है ।

RowTemplate से एक क्लोन पंक्ति बनाना सुरक्षित है imho:

//assuming that you created columns (via code or designer) in myDGV
DataGridViewRow row = (DataGridViewRow) myDGV.RowTemplate.Clone();
row.CreateCells(myDGV, "cell1", "cell2", "cell3");

myDGV.Rows.Add(row);

3
क्लोन () विधि ने एक पंक्ति लौटा दी लेकिन कोई सेल नहीं। row.Cells.Count 0. है
मार्कंड भट्ट

5
मार्कंड: अपने सेल संग्रह को आरंभ करने के लिए DataGridViewRow.CreateCells को कॉल करें।
मौन स्वर

जब नियंत्रण डेटा-बाउंड होता है तो पंक्तियों को प्रोग्रामग्रुप डेटाग्रिड्यू के पंक्तियों के संग्रह में जोड़ा नहीं जा सकता है।
डार्थ सुक्खू

10

यह है कि मैं एक पंक्ति को कैसे जोड़ूँ अगर dgrview खाली है: (myDataGridView मेरे उदाहरण में दो कॉलम हैं)

DataGridViewRow row = new DataGridViewRow();
row.CreateCells(myDataGridView);

row.Cells[0].Value = "some value";
row.Cells[1].Value = "next columns value";

myDataGridView.Rows.Add(row);

डॉक्स के अनुसार: "CreateCells () मौजूदा कोशिकाओं को साफ करता है और आपूर्ति की गई DataGridView टेम्पलेट के अनुसार उनका टेम्पलेट सेट करता है"।


2
धन्यवाद यह मेरे लिए बहुत उपयोगी था, मुझे "row.CreateCells (myDataGridView)" याद आ रही थी;
f4d0

जब नियंत्रण डेटा-बाउंड होता है तो पंक्तियों को प्रोग्रामग्रुप डेटाग्रिड्यू के पंक्तियों के संग्रह में जोड़ा नहीं जा सकता है।
डार्थ सूक्त

8

यदि ग्रिड किसी DataSet / तालिका के विरुद्ध बाध्य है, तो BindingSource जैसे उपयोग करने के लिए बेहतर है

var bindingSource = new BindingSource();
bindingSource.DataSource = dataTable;
grid.DataSource = bindingSource;

//Add data to dataTable and then call

bindingSource.ResetBindings(false)    

5

यहाँ ऐसा करने का एक और तरीका है

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        dataGridView1.ColumnCount = 3;

        dataGridView1.Columns[0].Name = "Name";
        dataGridView1.Columns[1].Name = "Age";
        dataGridView1.Columns[2].Name = "City";

        dataGridView1.Rows.Add("kathir", "25", "salem");
        dataGridView1.Rows.Add("vino", "24", "attur");
        dataGridView1.Rows.Add("maruthi", "26", "dharmapuri");
        dataGridView1.Rows.Add("arun", "27", "chennai"); 
    }

4

यदि आपको सेल वैल्यू स्ट्रिंग से अलग कुछ भी हेरफेर करने की आवश्यकता है जैसे कि एक टैग जोड़ना, तो यह प्रयास करें:

DataGridViewRow newRow = (DataGridViewRow)mappingDataGridView.RowTemplate.Clone();
newRow.CreateCells(mappingDataGridView);

newRow.Cells[0].Value = mapping.Key;
newRow.Cells[1].Value = ((BusinessObject)mapping.Value).Name;
newRow.Cells[1].Tag = mapping.Value;

mappingDataGridView.Rows.Add(newRow);

3
yourDGV.Rows.Add(column1,column2...columnx); //add a row to a dataGridview
yourDGV.Rows[rowindex].Cells[Cell/Columnindex].value = yourvalue; //edit the value

आप एक नई पंक्ति भी बना सकते हैं और फिर उसे इस तरह से DataGridView में जोड़ सकते हैं:

DataGridViewRow row = new DataGridViewRow();
row.Cells[Cell/Columnindex].Value = yourvalue;
yourDGV.Rows.Add(row);

2

यदि आप एक सूची बाँध रहे हैं

List<Student> student = new List<Student>();

dataGridView1.DataSource = student.ToList();
student .Add(new Student());

//Reset the Datasource
dataGridView1.DataSource = null;
dataGridView1.DataSource = student;

यदि आप DataTable को बाइंड कर रहे हैं

DataTable table = new DataTable();

 DataRow newRow = table.NewRow();

// Add the row to the rows collection.
table.Rows.Add(newRow);

1

DataGridView से प्रतिलिपि पंक्ति का एक उदाहरण और उसी dataGridView में एक नई पंक्ति जोड़ी गई:

DataTable Dt = new DataTable();
Dt.Columns.Add("Column1");
Dt.Columns.Add("Column2");

DataRow dr = Dt.NewRow();
DataGridViewRow dgvR = (DataGridViewRow)dataGridView1.CurrentRow;
dr[0] = dgvR.Cells[0].Value; 
dr[1] = dgvR.Cells[1].Value;              

Dt.Rows.Add(dR);
dataGridView1.DataSource = Dt;

1
//Add a list of BBDD
var item = myEntities.getList().ToList();
//Insert a new object of type in a position of the list       
item.Insert(0,(new Model.getList_Result { id = 0, name = "Coca Cola" }));

//List assigned to DataGridView
dgList.DataSource = item; 

क्या आप बता सकते हैं कि यह समस्या का समाधान कैसे होगा?
फनी

1
//header
dataGridView1.RowCount = 50;
dataGridView1.Rows[0].HeaderCell.Value = "Product_ID0";


//add row by cell 
 dataGridView1.Rows[1].Cells[0].Value = "cell value";

1

यदि आप पहले से ही परिभाषित करते हैं DataSource, तो आप DataGridView´s प्राप्त कर सकते हैं DataSourceऔर इसे एक के रूप में डाल सकते हैंDatatable

फिर एक नया जोड़ें DataRow और फ़ील्ड्स मान सेट करें।

इसमें नई पंक्ति जोड़ें DataTable और परिवर्तनों को स्वीकार करें।

C # में यह कुछ इस तरह होगा ।।

DataTable dataTable = (DataTable)dataGridView.DataSource;
DataRow drToAdd = dataTable.NewRow();

drToAdd["Field1"] = "Value1";
drToAdd["Field2"] = "Value2";

dataTable.Rows.Add(drToAdd);
dataTable.AcceptChanges();

0

एक विंडोज एप्लिकेशन पर विचार करें और बटन क्लिक इवेंट का उपयोग करके इस कोड को इसमें डाल दें।

dataGridView1.Rows
                .Add(new object[] { textBox1.Text, textBox2.Text, textBox3.Text });

0
string[] splited = t.Split('>');
int index = dgv_customers.Rows.Add(new DataGridViewRow());
dgv_customers.Rows[index].Cells["cust_id"].Value=splited.WhichIsType("id;");

लेकिन ध्यान रहे, WhichIsTypeमेरे द्वारा बनाई गई विस्तार विधि है।


2
जब आप कुछ कोड के साथ एक प्रश्न का उत्तर देते हैं, और उस कोड को आपके द्वारा बनाए गए कस्टम एक्सटेंशन विधि की आवश्यकता होती है, और आपने कस्टम विधि के लिए कोड को शामिल नहीं किया है, तो यह बहुत उपयोगी उत्तर नहीं है।
ब्रायन

पारितोषिक के लिए धन्यवाद। मैं उसके बारे में बहुत खुश हूँ। लेकिन यह एक महत्वपूर्ण नहीं है
10
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.