【问题标题】:how to insert data from texboxes to datagridview?如何将数据从texboxes插入datagridview?
【发布时间】:2014-01-06 09:12:43
【问题描述】:

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

下面是我的代码

问题是,每次第一行填满后 - 它不再有新行了。

 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; 

【问题讨论】:

  • 这段代码你在哪里写的?用什么方法?
  • 我在网上搜索过,在一些网页上找到了。怎么来的?

标签: c# winforms datagridview datasource datarow


【解决方案1】:

问题是因为

dr = dt.NewRow();

你必须检查datatable是否有数据,如果有那么你必须 赋值如下

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;
}

【讨论】:

  • 请问如何检查我的数据表是否有数据?
  • 请检查我的解决方案。这部分检查。 if ViewState("temp")= nothing
  • @Vignesh Kumar 您的代码将无法编译,原因有两个,1) C# 中的比较是使用 == 完成的,2) 'nothing' 这个词是 C# 使用 null 的 VB 事物。跨度>
  • @MPatel 谢谢伙计。我已经更新了解决方案。
  • 你能告诉我吗。 1)如何删除一行? 2) 我如何使用我的班级信息?
【解决方案2】:

试试这个:

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】:

    由于缺乏提供的信息,我将假设您遇到的错误是由于每次都使用新的 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();
            }
        }
    } 
    

    【讨论】:

    • 但我还有一个问题。
    • 如何删除一行?
    • 需要找到要删除的行的索引,调用dt.Rows[RowIndex].Delete();
    • 如何找到索引?
    • 如何找到行的索引?
    【解决方案4】:

    我会这样做:

    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; }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2018-01-25
      • 2016-03-11
      • 1970-01-01
      相关资源
      最近更新 更多