如何将数据从文本框插入datagridview?

时间:2013-12-18 09:19:14

标签: c# winforms datagridview datasource datarow

我想制作电话簿,需要在文本框中添加联系信息 数据网格视图。

以下是我的代码

问题,每次第一行填充后都会出现问题 - 它不再是新行了。

 class information
{
    public string firstname { get; set; }
    public string surname { get; set; }
    public int phonenumber { get; set; }
    public int cellphone { get; set; }
    public string email { get; set; }

}

如何在我的代码中使用此类?

DataTable dt = new DataTable();
DataRow dr;

dt.Columns.Add("Firstname");
dt.Columns.Add("Lastname");
dt.Columns.Add("PhoneNumber");

dr = dt.NewRow();
dr["Firstname"] = tb1.Text;
dr["Lastname"] = tb2.Text;
dr["PhoneNumber"] = tb3.Text;

dt.Rows.Add(dr);
dataGridView1.DataSource = dt; 

4 个答案:

答案 0 :(得分:3)

我会这样做:

private void PopulateGridView()
{
    var myRecords = new List<PhoneBookRecord>();
    myRecords.Add(new PhoneBookRecord { FirstName = "blah", LastName = "Blah", PhoneNumber = "1234" });
    myRecords.Add(new PhoneBookRecord { FirstName = "New", LastName = "Song", PhoneNumber = "132134" });
    temper.DataSource = myRecords; 
}

class PhoneBookRecord
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string PhoneNumber { get; set; }
}

答案 1 :(得分:1)

问题在于

dr = dt.NewRow();

您必须检查数据表是否有数据,如果有,则必须检查 分配如下

dr = dt.Rows.Add();

例如:

if(ViewState("temp") == null)
{
    DataTable dt = new DataTable();
    DataRow dr;
    dt.Columns.Add("Firstname");
    dt.Columns.Add("Lastname");
    dt.Columns.Add("PhoneNumber");
    dr = dt.NewRow();
    dr["Firstname"] = tb1.Text;
    dr["Lastname"] = tb2.Text;
    dr["PhoneNumber"] = tb3.Text;
    dt.Rows.Add(dr);
    dataGridView1.DataSource = dt; 
    ViewState("temp")=dt;
}
else
{
    DataTable dt = ViewState("temp")
    DataRow dr;
    dr =dt.Rows.Add();
    dr["Firstname"] = tb1.Text;
    dr["Lastname"] = tb2.Text;
    dr["PhoneNumber"] = tb3.Text;
    dt.Rows.Add(dr);
    dataGridView1.DataSource = dt; 
    ViewState("temp")=dt;
}

答案 2 :(得分:1)

试试这个:

public partial class Form1 : Form
{
    DataTable dt = new DataTable();
    DataRow dr;      

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        dt.Columns.Add("Firstname");
        dt.Columns.Add("Lastname");
        dt.Columns.Add("PhoneNumber");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        dr = dt.NewRow();
        dr["Firstname"] = textBox1.Text;
        dr["Lastname"] = textBox2.Text;
        dr["PhoneNumber"] = textBox3.Text;
        dt.Rows.Add(dr);
        dataGridView1.DataSource = dt;     
    }
}

答案 3 :(得分:1)

由于缺乏提供的信息,我将假设您获得的错误是由于每次都有一个新的DataTable并且在 DataGridView的数据源。您真正想要做的是只创建一个DataTable,将其附加到DataSource并每次添加到该表。请参阅以下代码

public partial class Form1 : Form
{
    DataTable dt = new DataTable();

    public Form1()
    {
        InitializeComponent();

        // Insert the columns you require
        dt.Columns.Add("Firstname");
        dt.Columns.Add("Lastname");
        dt.Columns.Add("PhoneNumber");

        // This is the only time you need to attach to the DataSource
        dataGridView1.DataSource = dt; 
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Add a new row 
        var dr = dt.Rows.Add();

        // And attach the values to the appropriate column
        dr["Firstname"] = tb1.Text;
        dr["Lastname"] = tb2.Text;
        dr["PhoneNumber"] = tb3.Text;
    }

    private void DeleteRow()
    {
        if (dataGridView1.SelectedRows.Count > 0)
        {
            dt.Rows[dataGridView1.SelectedRows[0].Index].Delete();
            return;
        }

        if (dataGridView1.SelectedCells.Count > 0)
        {
            dt.Rows[dataGridView1.SelectedCells[0].RowIndex].Delete();
        }
    }
}