4

button_click事件被触发时。我DataTable从方法中获取并将其分配给DataTable在类中定义,但这个DataTable设置什么都没有。如果我绑定DataTableGridView它显示数据。

public partial class Default : System.Web.UI.Page
{
  TestClass test = new TestClass();
  DataTable _table = new DataTable();

  protected void Button1_Click(object sender, EventArgs e)
    {

      _table = test.getTable();
     //displaying table
      GridView1.DataSource= _table;
      GridView1.DataBind();
    }
  protected void Button2_Click(object sender, EventArgs e)
    {
      //does not displaying table 
      GridView2.DataSource= _table;
      GridView2.DataBind();
    }
}

当我想从中获取一些数据时_table,它什么都没有。怎么了?

更新: 谢谢大家,尤其是Darren Davies,回发问题一直存在。当 Button2_Click 事件发生时 _table 分配 _table = new DataTable(),因此 _table 不再引用方法 getTable() 返回的表。

4

4 回答 4

4

只有在 Button2 之前单击 Button1 才会正确绑定。否则_table不会被填充。

您应该检查是否_table有数据或调用事件处理程序中的getTable方法:Button2_Click

protected void Button2_Click(object sender, EventArgs e)
{
   _table = test.getTable();
   GridView2.DataSource= _table;
   GridView2.DataBind();
}
于 2013-09-23T11:38:39.080 回答
0

您可以尝试的是:

    protected void Button1_Click(object sender, EventArgs e)
        {

          _table = test.getTable();
         //displaying table
         GridVieuw1.Datasource = null;
         GridView1.DataSource= _table;
         GridView1.DataBind();

        }

您也必须在 buuton 2 处执行此操作

protected void Button2_Click(object sender, EventArgs e)
            {

              _table = test.getTable();
             //displaying table
             GridVieuw2.Datasource = null;
             GridView2.DataSource= _table;
             GridView2.DataBind();

            }

否则表格在按钮 2 处是空的,所以你必须按下按钮 1 来填充它

也许这可以解决问题

于 2013-09-23T11:43:18.213 回答
0

你正在初始化你的DataTable喜欢

DataTable _table = new DataTable();

然后,当您单击按钮 1 时:

protected void Button1_Click(object sender, EventArgs e)
{
  _table = test.getTable(); // <- here
 //displaying table
  GridView1.DataSource= _table;
  GridView1.DataBind();
}

您正在将您分配DataTable不同的实例。您必须调试并检查您的方法getTable是否返回有效DataTable(如果您想查看数据,请确保它包含数据。

于 2013-09-23T11:43:35.230 回答
0

当您没有在按钮 2 之前按下按钮 1 时,就会出现问题。您应该像这样概括您的数据绑定:

public partial class Default : System.Web.UI.Page
{
  TestClass test = new TestClass();
  DataTable _table = new DataTable();

  protected void Button1_Click(object sender, EventArgs e)
    {

      FillDataTable ();    // <----------- See this function call

     //displaying table
      GridView1.DataSource= _table;
      GridView1.DataBind();
    }
  protected void Button2_Click(object sender, EventArgs e)
    {

      FillDataTable ();    // <----------- See this function call

      //does not displaying table 
      GridView2.DataSource= _table;
      GridView2.DataBind();
    }

    private void FillDataTable()
    {
         if(_table.Rows.Count == 0) 
           _table = test.getTable();
    }
}

一次填充表格是一种明智的方法,而不是在每个按钮单击时填充并在每个按钮单击事件中将其写下来。

于 2013-09-23T11:43:50.770 回答