0

我的问题是,如果 button_2 有可能调用/使用在 button_1 中创建的数据表中保存的数据。让我们说

void Button1_Click(Object sender, EventArgs e)
{
  //some code to fill the datatable
}  

现在按钮 1 代码已经完成并且它可以工作,我唯一的问题是我不知道如何将 de 数据表从 button_1 发送到 button_2 这样 button_2 可以在数据表中使用相同的数据存储,顺便说一下我使用 C# ,asp.net,而不是使用 Visual Studio。

4

6 回答 6

1

在你的函数之外声明你的 DataTable

DataTable _myDataTable = new DataTable

void Button1_Click(Object sender, EventArgs e)
{
  //some code to fill the datatable
}  
于 2012-07-04T12:13:18.710 回答
1

我建议你考虑一下流程。如果两个按钮做同样的事情,那么为什么需要两个按钮?

如果两个按钮的工作不同,但数据相同,那么您可以这样做。您可以将数据表存储在内存中。并访问它。

   DataTable _myDataTable = new DataTable();

   //get Method

    public DataTable FillDatatable(DataTable _myDataTable)
    {
    return _myDataTable;
    }

在 button2 点击,你检查它的无效性。像这样 。

if(_myDataTable !=NULL)
{
  If(_myDataTable.Rows.Count > 0 ) 
   //then do some fun  with that data 
}
于 2012-07-04T12:20:31.467 回答
1

由于您声明数据是在事件处理程序中获取的,Button1并且它应该在事件处理程序中可用,因此Button2您必须以某种方式持久化数据表,以便它在回发中存活。

有几种可能性:

  • 视图状态(只要对象是Serializable,因为DataTable它似乎工作)
  • 会话(如果您使用会话)
  • 应用范围 (Application["yourKeyName"] = dbTable;)
  • 合适类的静态成员
  • 服务器缓存

或者,如果用于获取数据的数据库操作不是“繁重”,您可以在需要时从那里加载它。

有关状态管理的更多信息,请参阅

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

编辑:给你一个更具体的建议。尝试存储DataTable在会话中,像这样

Session["preBuiltDataTable"] = theTable;

在 Button1_Click 的末尾。然后使用它获取对它的引用

DataTable tableFromB1Click = Session["preBuiltDataTable"] as DataTable;
if (tableFromB1Click != null)
{
    // do stuff here
}

在 Button2_Click 中。

于 2012-07-04T14:09:22.350 回答
0

为数据存储创建一个单独的函数 [SaveDataTable(DataTable dt)],它接受 DataTable 作为参数,并从 button1 和 button2 的单击函数中调用它。

希望这对您有所帮助。编码快乐!!

于 2012-07-04T12:07:51.323 回答
0

假设创建 1 个函数

public void fgh()
 {
    //write down your database code such as
    using(con=new SqlConnection(your connection string))
    { 
      cnn=new SqlCommand( your sql command);
      cnn.Connection=con;
      using(ds=new Dataset())
        {
          con.Open();
          da.Fill(ds);
       }
  }
}

现在你有了功能,在不同的按钮之间调用。

于 2012-07-04T12:14:28.397 回答
0

将 DataTable 分配给 ViewState,例如

protected void Button1_Click(Object sender, EventArgs e)
{
    ViewState["DT"] = dt;              // dt is the DataTable
} 

使用数据表如下:

protected void Button2_Click(Object sender, EventArgs e)
{
    DataTable dt2 = (DataTable)ViewState["DT"];              // dt is the DataTable
} 
于 2012-07-04T12:17:51.557 回答