有时NullReferenceException未处理/否则仅在gridview中显示列名

时间:2014-03-16 08:48:38

标签: winforms c#-3.0

Form1 中有一些控件和一个名为 Filter 的按钮。触发事件Filter_Clicked后,将打开第二个表单 Form2 Form2 中有一些输入控件和一个名为Search的按钮。触发Search_Clicked事件后, Form2 会向 Form1 中的某个方法发送查询。然后,结果显示在 Form1 GridView控件中。

我的问题是:

  • 我定义了每列的行数据,但是当结果显示在gridview中时,只有列的名称可以查看,行甚至是空的,甚至不显示为NULL。
  • 我尝试以两种不同的方式从 Form1 调用 Form2 ,每种方式都会导致不同的结果和警告:

变式1:

/* Result: Display only column name in Form1 gridview */
public Form2()
{
    InitializeComponent();
    var way1 = Application.OpenForms.OfType<Form1>().Single();            
}

Image Result of Variant 1 Search_Clicked()事件如下所示:

String searchExam = comboBoxForExamFilter.SelectedItem.ToString();
String searchFilter = "select Exam_Name,Subject_Name,Marks,Status from ABC_SchoolDB.dbo.Sheet_Marks where Exam_Name= ' " + searchExam + " ' ";                
way1.userSqlQueryExecutor(searchFilter);

注意:

  • 从Form1调用userSqlQueryExecutor(searchQuery)时,会显示表数据
  • 不要担心sql注入

变式2:

/* Result: NullReferenceException was unhandled */
private Form1 way2;
public Form2(Form callForm1)
{
    InitializeComponent();
    way2 = callForm1 as Form1;            
}

Search_Clicked()事件如下所示:

way2.userSqlQueryExecutor(searchFilter);

如何在GridView控件中显示所有行数据?

0 个答案:

没有答案