我在整个stackoverflow上搜索,无法找到适合我的问题的答案。
我想将数据表值绑定到Windows窗体中的datagridview。特别是一类中的数据表和Seperate文件中的Gridview。

这是我的代码。

namespace MyProj
{
  public partial class ThisAddIn
{
  public string GetDetails()
    {
      // Some Codes here
      DataTable dt = new DataTable();
        dt.Columns.Add("id");
        dt.Columns.Add("uid");
        dt.Columns.Add("email");

        //Some codes here.I just only give a data table part only.

         DataRow row = dt.NewRow();

           row["id"] = sid;
           sid++;

           row["uid"] = uid;
           row["email"] = e;
           dt.Rows.Add(row);
    }
}
}


我只是试图添加Gridview,这是代码。
首先我添加Add-> NewItem-> WindowsForm并添加为form1.cs

然后我从工具箱中将Gridview添加到这个form1.cs类中。然后双击gridview。

这是我的form1.cs编码

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        //ThisAddIn th = new ThisAddIn();
        this.dataGridView1.Visible = true;
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource =dt; // here show dt does not contain the current context.


}

这两个文件都在同一个命名空间下。当我尝试从类(ThisAddIn th = new ThisAddIn();)创建对象时,它会显示,


  
    ThisAddIn.ThisAddIn(Microsoft.Office.tools.Outlook Factory工厂,IsServiceProvider serviceProvider)
    
    此AddIn不包含带有0个参数的构造函数
  


我是C#的新手,请帮助我解决此问题,如果您能给我一个有解释的解决方案,那就太好了。

最佳答案

1)GetDetails方法必须返回一个DataTable,因此我将string更改为DataTable并返回dt;

public partial class ThisAddIn
{
public DataTable GetDetails()
  {
  // Some Codes here
    DataTable dt = new DataTable();
    dt.Columns.Add("id");
    dt.Columns.Add("uid");
    dt.Columns.Add("email");
    DataRow row = dt.NewRow();
     row["id"] = sid;
     sid++;
     row["uid"] = uid;
     row["email"] = e;
     dt.Rows.Add(row);
     return dt;
  }
}


2)注意如何实例化ThisAddIn类,然后调用GetDetails方法-将结果返回到范围在上下文中的DataTable中。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    ThisAddIn th = new ThisAddIn();
    //Declare a DataTable and call to GetDetails
    DataTable dt =  th.GetDetails();
    this.dataGridView1.Visible = true;
    dataGridView1.AutoGenerateColumns = false;
    dataGridView1.DataSource = dt;
}


3)实例化ThisAddIn th = new ThisAddIn();时,您将收到错误消息:


  此AddIn不包含带有0个参数的构造函数


要解决此问题,您需要在实例化类时提供一些值(参数中的参数):

ThisAddIn th = new ThisAddIn(value1, value2, etc)

关于c# - 以Windows形式将Datatable数据绑定(bind)到Gridview,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14794470/

10-10 22:16