2014-10-28 51 views
0

我有一个从sql数据库datagridview和它的数据。如何将一些文本设置为datagridview单元格,当它的单元格在c#中包含0值时?

我的datagridview一些单元格填充0(零)值。
我想在datagridview中填充0值的位置设置NULL文本。

enter image description here

//I'm using this code but not working 
private void dataGridView4_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e) 
    { 
     for (int i = 0; i < dataGridView4.Rows.Count; i++) 
     { 
      for (int j = 7; j < dataGridView4.Rows[i].Cells.Count; j++) 
      { 
       if (Convert.ToInt32(dataGridView4.Rows[i].Cells[j].Value) == 0) 
       { 
        dataGridView4.Rows[i].Cells[j].Value = "Null"; 
       } 

      } 
     } 

    } 

我的SQL查询:

select l.admission_number,l.student_class ,l.student_name,hindi,maths,social,l.telugu,l.english , '' as english_1,'' as english_2,l.science, '' as ns,'' as ps from lkg_to_seventh_marks as l union all select e.admission_number ,e.student_class , e.student_name ,hindi,maths,social,e.telugu,'' as english,e.english_1 ,e.english_2,'' as science,e.ns,e.ps from eighth_to_ninth_marks as e

+0

我想你不能手动操作字段,因为你是数据绑定。 – RadioSpace 2014-10-28 06:28:19

+0

通过什么方式获得“数据”,即数据集/ SQLserver,EF/MySQL,EF/SQLserver? – RadioSpace 2014-10-28 06:29:53

+0

是啊..当然我绑定的数据,但我想设置一些文本在0值..如果有任何可能性告诉我PLZ.Here我绑定数据从Microsoft SQL服务器 – 2014-10-28 06:31:25

回答

0

正如alireza说我更换任何0在我的SQL查询与 'NULL' 值与casting.for 3个表有一些不同的列和一些相同的列

select l.admission_number,l.student_class ,l.student_name,cast(l.telugu as char(4)) as telugu, 
 
'NULL' as telugu_1,'NULL' as telugu_2,l.hindi,cast(l.english as CHAR(4)) as english,'NULL' as english_1,'NULL' as english_2, 
 
cast(l.maths as CHAR(4)) as maths,'NULL' as maths_1,'NULL' as maths_2, 
 
cast(l.science as CHAR(4)) as science,'NULL' as ns,'NULL' as ps, 
 
cast(l.social as CHAR(4)) as social,'NULL' as social_1, 
 
'NULL' as social_2,l.total 
 
from lkg_to_seventh_marks as l 
 

 
union all 
 

 
select e.admission_number ,e.student_class ,e.student_name , 
 
cast(e.telugu as char(4)) as telugu,'NULL'as telugu_1,'NULL' as telugu_2,e.hindi, 
 
'NULL' as english,cast(e.english_1 as CHAR(4)) as english_1, 
 
CAST(e.english_2 as CHAR(4)) as english_2,CAST(e.maths as CHAR(4)) as maths,'NULL' as maths_1, 
 
'NULL' as maths_2,'NULL' as science,cast(e.ns as CHAR(4)) as ns,CAST(e.ps as CHAR(4)) as ps, 
 
'NULL' as social,'NULL' as social_1,'NULL' as social_2,e.total 
 
from eighth_to_ninth_marks as e 
 

 
union all 
 

 
select t.admission_number ,t.student_class ,t.student_name,'NULL'as telugu, 
 
cast(t.telugu_1 as char(4)) as telungu_1,CAST(t.telugu_2 as CHAR(4)) as telugu_2, 
 
t.hindi,'NULL' as english,CAST(t.english_1 as CHAR(4)) as english_1, 
 
CAST(t.english_2 as CHAR(4)) as english_2,'NULL' as maths,CAST(t.maths_1 as CHAR(4)) as maths_1, 
 
CAST(t.maths_2 as CHAR(4)) as maths2,'NULL' as science,CAST(t.ns as CHAR(4)) as ns,CAST(t.ps as CHAR(4))as ps, 
 
'NULL' as social,CAST(t.social_1 as CHAR(4)) as social_1,CAST(t.social_2 as CHAR(4)) as social_2,t.total 
 
from tenthclass_marks as t

1

假设你想更换的0与字符串中的每个例如,一个做这将是这样使用DataGridView的RowsAdded事件。通过DataGridViewRowEventArgs获取对该行的引用,迭代该行中的每个DataGridViewItem,然后将您遇到的任何0值更改为任何要替换的值。

这里是事件的一个例子用法:

private void dataGridView1_NewRowNeeded(object sender, 
     DataGridViewRowEventArgs e) 
{ 
    foreach (DataGridViewCell cell in e.Row.Cells) 
    { 
     if (cell.Value == "0" || cell.Value == 0) // not sure which you're using 
     { 
      cell.Value = "your replacement value here"; 
     } 
    } 
} 

MSDN对RowsAdded这里的一篇文章:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowsadded%28v=vs.110%29.aspx

注意RadioSpace和阿里是正确的 - 你已经经过UI控件修改元素已经喂它,你的数据有点落后和过于复杂。

+0

你有一个代码示例来实现这一点,而数据绑定? – RadioSpace 2014-10-28 06:38:06

+0

现在添加一个。我假设他使用WinForms,因为DataGridView不存在于WPF中。我不认为他是数据绑定的事实会很重要 - 我对WPF中的DataGrid使用了类似的修复。不过,他仍然应该测试一下。 – furkle 2014-10-28 06:39:06

+0

是我使用的赢形成 – 2014-10-28 06:47:50

2

您可以直接从查询中返回'NULL'而不是0。要注意的是返回的值不会成为这个变更后的数字,所以用这个查询只用于填充网格:

SELECT l.admission_number,l.student_class, 
    l.student_name, 
    CASE hindi WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), hindi), 
    CASE maths WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), maths), 
    CASE social WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), social), 
    CASE l.telugu WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), l.telugu), 
    CASE l.english WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), l.english), 
    '' as english_1, '' as english_2,l.science, '' as ns,'' as ps 
FROM lkg_to_seventh_marks as l 
UNION ALL 
SELECT e.admission_number ,e.student_class , 
    e.student_name, 
    CASE hindi WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), hindi), 
    CASE maths WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), maths), 
    CASE social WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), social), 
    CASE e.telugu WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), e.telugu), 
    '' as english, 
    CASE e.english_1 WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), e.english_1), 
    CASE e.english_2 WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), e.english_2), 
    '' as science, 
    CASE e.ns WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), e.ns), 
    CASE e.ps WHEN 0 THEN 'NULL' ELSE CONVERT(varchar(15), e.ps) 
FROM eighth_to_ninth_marks as e 

我希望你的想法

+0

我要这样说我的表执行后,我的查询,并直接装牛逼的datagridview – 2014-10-28 09:40:27

+0

确定没有内容0 value..I得到0值。所以你已经隐藏了我们的一些东西:D – Alireza 2014-10-28 09:46:35

+0

我不知道我从你身上隐藏什么。 – 2014-10-28 09:58:54

相关问题