private void Student_del_Load(object sender, EventArgs e)
        {
            // TODO: 这行代码将数据加载到表“vIEW_Student_DataSet.VIEW_Student”中。您可以根据需要移动或移除它。
            this.vIEW_StudentTableAdapter.Fill(this.vIEW_Student_DataSet.VIEW_Student);        }
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
           
            DataView dv = vIEW_Student_DataSet.Tables[0].DefaultView;
            string stud = toolStripTextBox_Stud.Text;
            if (stud.Length != 0)
            {
                dv.RowFilter = "StudID = '" + stud + "'";
                dataGridView_Select.DataSource = dv;
            }
            else
                this.vIEW_StudentTableAdapter.Fill(this.vIEW_Student_DataSet.VIEW_Student);
         }
两段代码是同一个窗体下的程序。 
第一段是整个窗体load时绑定datagridview的,填充了整个表。 
第二段代码是想做个查询功能。 
如果(查询码不为空)则显示符合条件的行。 
反之,则显示所有的行。 我想,显示所有行等于一个刷新一样的功能,就重新绑定了整个datagridview,但实际效果是没有任何反应。 
第一个查询的方法验证后通过。已经证实运行了else语句,用F10一条条看的,确实运行了,但显示的结果和查询后的结果一样,请问,这样的绑定是正确的吗? 
datasource也是绑定,fill也是绑定,请问这两种绑定有什么不同。

解决方案 »

  1.   

    DataSource是针对控件的数据源的绑定的。
    Fill是针对表适配器的。
    至少从表面来看是这样。
    另外,DataSourcec的值是经过了Fill给适配器然后获得的值,而不能DataSource=一个SQL获得的值,DataSource的赋值对象必须是ICollection对象。
      

  2.   

    我的datasource绑定后的结果是正确的。现在不正确的是else后面的那一句,再次填充dataset,但结果仍然是datasource绑定的结果
      

  3.   

    你找本C#的书,看看,里面有一个图,是解释其DataSet和DataAdapter之间的关系的。