2013-06-27 27 views
0

我想選擇GridView中行文本框上chekbox在GridView檢查在DataGrid檢查複選框。我得到這個代碼,但它不工作。如何顯示行的細節的文本框在C#

private void button1_Click(object sender, EventArgs e) { 

    int i = 0; 
    List ChkedRow = new List <String>(); 

    for (i = 0; i <= dataGridView1.RowCount - 1; i++) 
    { 
     if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["Column1"].Value) == true) 
     { 
      ChkedRow.Add(i); 
     } 
    } 

    if (ChkedRow.Count == 0) 
    { 
     MessageBox.Show("Select atleast one checkbox"); 
     return; 
    } 

    foreach (int k in ChkedRow) 
    { 
     textBox1.Text = dataGridView1.Rows[k].Cells[1].Value.ToString(); 

    } 
} 
+3

'不工作'並沒有告訴我們很多。什麼*確切*是問題?它有什麼作用?它不是做什麼的?它拋出了什麼錯誤? – Arran

+0

比方說,我們理解你想要什麼,你嘗試過類似textBox1.Text + = dataGridView1.Rows [K] .Cells [1] .Value.ToString(); 甚至StringBuilder? –

+0

你可以發佈gridview綁定代碼和aspx代碼嗎? –

回答

0

您需要先轉換CellDataGridViewCheckBoxCell然後拿到FormattedValue得到的真正CheckBox值。

所以使用自己的代碼,它看起來可能是這樣的:

private void button1_Click(object sender, EventArgs e) 
{ 

    List ChkedRow = new List <String>(); 

    for(int i=0; i < dataGridView1.Rows.Count; i++) 
    { 
    DataGridViewCheckBoxCell chkBox = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[0]; 
    if ((Boolean)chkBox.FormattedValue) 
     { 
     ChkedRow.Add(i); 
     } 
    } 

    if (ChkedRow.Count == 0) 
    { 
    MessageBox.Show("Select atleast one checkbox"); 
    return; 
    } 

    foreach (int k in ChkedRow) 
    { 
    textBox1.Text += dataGridView1.Rows[k].Cells[1].Value.ToString()+ " - "; 
    } 
} 

您也可以使用Multiline爲您Textbox但要確保它的高度足夠高,這樣你可以看到選擇的所有值,如:

textBox1.Multiline = true; 
foreach (int k in ChkedRow) 
    { 
    textBox1.Text += dataGridView1.Rows[k].Cells[1].Value.ToString()+ Environment.NewLine; 
    } 
+0

感謝您的回覆......我檢查了您提供的解決方案。但是我在代碼中解決了一些問題......並且得到了輸出真的非常感謝您的解決方案。 – MohRizwan

+0

@MohRizwan很高興能有所幫助,儘管不是你想要的。至少它會把你帶到那裏。快樂編碼和上帝保佑。 – Edper

相關問題