4

我在 Windows 窗体应用程序中有 4 个文本框和一个名为“添加”的网格视图和按钮。我想要的是,当我单击“添加”按钮时,在 4 个文本框中输入的数据应该转到同一行中的 datagridview 的四个不同列。如果我清除文本框,再次填充它们并再次单击“添加”按钮,则数据应转到 gridview 的第二行。

4

4 回答 4

3

在您的应用程序的某处创建如下所示的类

public class MyClass
{
    public string field1 { get; set; }
    public string field2 { get; set; }
    public string field3 { get; set; }
    public string field4 { get; set; }
}

在你的 form.cs 里面写这个,

public static List<MyClass> lst = new List<MyClass>();

在添加按钮的单击事件中执行此操作

private void btnAdd_Click(object sender, EventArgs e)
        {
            MyClass obj = new MyClass();
            obj.field1 = txt1.Text.Trim();
            obj.field2 = txt2.Text.Trim();
            obj.field3 = txt3.Text.Trim();
            obj.field4 = txt4.Text.Trim();

            lst.Add(obj);
            dataGridView1.DataSource = lst;
        }
于 2012-10-21T07:04:31.170 回答
0

要遵循的步骤:

1) 绑定 DataGrid 视图后,将 DataSource 保存在 Viewstate 变量中

2)为添加按钮定义点击事件在点击事件中,调用具有数据源的Viewstate变量,将其转换为DataTable。创建该数据表的新行,为新行的单元格分配值。将此新行添加到 Datatable,再次将 dataTable 保存在 ViewSate 中,将数据源绑定到 DataGrid

就这些了~

于 2012-10-20T18:37:30.677 回答
0

首先感谢SHAKIR SHABBIR先生,但我认为Windows窗体应用程序中没有视图状态......

我建议使用静态集合类型...

您可以为您的输入表单定义一个类并为每个文本框定义一个变量,当您单击添加按钮时创建该类的对象,使用您的文本框设置其所有值,在网格中插入行,并保存所有行数据(每个类的对象gridview 行)在列表中

您还可以使用静态数据表...您必须为每个文本字段创建列..向数据表添加行..选择网格的数据源...

如果您需要进一步的帮助,我会随时为您提供帮助..

于 2012-10-20T20:19:57.060 回答
0

使用此代码:

 namespace WindowsFormsApplication1
 {
     public partial class Form1 : Form
    {
        DataSet ds = new DataSet();
        SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Dataset;Integrated Security=True");
        SqlDataAdapter ds1 = new SqlDataAdapter();

        BindingSource bd = new BindingSource();

        public Form1()
        {
            InitializeComponent();
        }

       private void btnAdd_Click(object sender, EventArgs e)
      {
        ds1.InsertCommand = new SqlCommand("INSERT INTO Employee VALUES(@FirstName,@LastName)", con);
        ds1.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
        ds1.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;

        con.Open();
        ds1.InsertCommand.ExecuteNonQuery();
        con.Close();
    }

    private void btndisplay_Click(object sender, EventArgs e)
    {
        ds1.SelectCommand = new SqlCommand("Select * from Employee", con);
        ds.Clear();
        ds1.Fill(ds);

        dataGridView1.DataSource = ds.Tables[0];

        bd.DataSource = ds.Tables[0];

        //txtFirstName.DataBindings.Add("Text", bd, "FirstName");
        //txtLastName.DataBindings.Add("Text", bd, "LastName");

    }

    private void btnPervious_Click(object sender, EventArgs e)
    {
        bd.MovePrevious();
        update();
        records();
    }

    private void btnNext_Click(object sender, EventArgs e)
    {
        bd.MoveNext();
        update();
        records();
    }

    private void btnFirst_Click(object sender, EventArgs e)
    {
        bd.MoveFirst();
        update();
        records();
    }

    private void btnLast_Click(object sender, EventArgs e)
    {
        bd.MoveLast();
        update();
        records();
    }

    private void update()
    {
        dataGridView1.ClearSelection();
        dataGridView1.Rows[bd.Position].Selected = true;
        records();
    }
    private void records()
    {
        label1.Text = "records" + bd.Position + " of " + (bd.Count - 1);

    }

不要忘记标记这个答案

于 2013-02-08T12:02:00.973 回答