大家好!小弟有一事想请教,dataset是一个可以存取数据的容器
那么我可不可以在页面上做两个文本框
textbox1 textbox2
分别将他们填入姓名和学号,然后点击submit按钮,页面就将文本框里的信息存入一个dataset
并将dataset里的信息在datagrid里显示出来循环往复,dataset里的数据越来越多,datagrid显示的数据也就越来越多,这时候我再点击Store按钮,就会将dataset里的信息全部存入数据库中, dataset和datagrid也将数据清零

解决方案 »

  1.   

    DataTable dt=new DataTable();
    dt.Columns.Add("name");
    dt.Columns.Add("psw");
    DataRow dr=dt.NewRow();
    dr["name"]="name1";
    dr["psw"]="psw1";
    dt.Rows.Add(dr);
    DataGrid1.DataSource=dt;
    DataGrid1.DataBind();
      

  2.   

    System.Data.SqlClient.SqlConnection cnn1 = new System.Data.SqlClient.SqlConnection("连接字符串");
                System.Data.SqlClient.SqlCommand cm1 = new System.Data.SqlClient.SqlCommand();
                    
                cm1.Connection = cnn1;
                cm1.CommandText = "select top 10 * from table1";
                System.Data.SqlClient.SqlDataAdapter da1 = new System.Data.SqlClient.SqlDataAdapter(cm1);            DataTable dt = new DataTable();
                da1.Fill(dt);
                da1.FillSchema(dt,System.Data.SchemaType.Mapped);//这是必须的,要载入数据表结构
                
                //下面插入多条数据
                for(int i=0;i<10;i++)
                {
                    DataRow newRow = dt.NewRow();
                    newRow[0] = 123;
                    newRow[1] = "abc";
                    //....
                    dt.Rows.Add(newRow);
                }
                ViewState["myDataTable"] = dt;
                //这中间页面可能发生多次回传,多次更改dt的行
                //........            DataTable myDT = (DataTable)ViewState["myDataTable"];                     //下面重新写回数据库
    System.Data.SqlClient.SqlConnection cnn2 = new System.Data.SqlClient.SqlConnection("连接字符串");
                System.Data.SqlClient.SqlCommand cm2 = new System.Data.SqlClient.SqlCommand();
                    
                cm2.Connection = cnn2;
                cm2.CommandText = "select top 10 * from table1";
                System.Data.SqlClient.SqlDataAdapter da2 = new System.Data.SqlClient.SqlDataAdapter(cm2);
                System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da2);//这句看起来没什么作用,但实际上很关键,如果没有这个就不能用da.Update方法
                cnn2.Open();
                da2.Update(myDT);
                cnn2.Close();            myDT.AcceptChanges();
      

  3.   

    “dataset是一个可以存取数据的容器”,这在进行winform开发的时候体现得比较明显,因为它可以驻留在本机内存中,但对webform而言,服务器不可能保留每一个用户的dataset,所以回传之后,dataset就没有了,唯一的办法就是把它保存在ViewState或Session中,如上面给出的代码但是,问题依然存在,如果每个用户都占用一片服务器的内存空间来保存他自己的DataSet,那么如果有成千上万的用户同时使用该系统,后果可以设想,所以上面的方法也该慎用
      

  4.   

    DataTable dt=new DataTable();
    dt.Columns.Add("name");
    dt.Columns.Add("psw");
    DataRow dr=dt.NewRow();
    dr["name"]="name1";
    dr["psw"]="psw1";
    dt.Rows.Add(dr);
    DataGrid1.DataSource=dt;
    DataGrid1.DataBind();

    如果改成VB语言怎么改能  多谢sunjay117(贱人一个)  大哥啊
      

  5.   

    Eddie005(♂) №.零零伍 (♂) 大哥分析的有道理我就是想做一个用户能在本地输入数据的页面,用户一条条输入好,如果有问题还可以修改,如果没有问题可以点击直接上传,看来使用dataset在对应大数据量的情况下肯定会有问题。
      

  6.   

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim dt As New DataTable
            dt.Columns.Add("name")
            dt.Columns.Add("upi")        Dim dr As DataRow
            dr = dt.NewRow
            dr("name") = TextBox1.Text
            dr("upi") = TextBox5.Text
            dt.Rows.Add(dr)
            DataGrid1.DataSource = dt
            DataGrid1.DataBind()
        End Sub我做好了,做是可以做,但是每次datagrid只能显示前一次的输入  应该怎么控制一下?
    Dim dt As New DataTable 设成全局变量?  应该在哪里设?