1

我想在首次加载 aspx 页面时创建一个数据表。我已放置我的代码以在类文件中创建带有空白行的数据表。下面是创建数据表的代码。

public class PaymentDetailsDataTable
{
    public PaymentDetailsDataTable()
    {
        DataTable pventries = new DataTable();

        DataColumn col1 = new DataColumn("col1");
        DataColumn col2 = new DataColumn("col2");
        DataColumn col3 = new DataColumn("col3");
        DataColumn col4 = new DataColumn("col4");
        DataColumn col5 = new DataColumn("col5");
        DataColumn col6 = new DataColumn("col6");
        DataColumn col7 = new DataColumn("col7");
        DataColumn col8 = new DataColumn("col8");
        DataColumn col9 = new DataColumn("col9");

        col1.DataType = System.Type.GetType("System.Int32");
        col2.DataType = System.Type.GetType("System.String");
        col3.DataType = System.Type.GetType("System.String");
        col4.DataType = System.Type.GetType("System.String");
        col5.DataType = System.Type.GetType("System.String");
        col6.DataType = System.Type.GetType("System.String");
        col7.DataType = System.Type.GetType("System.String");
        col8.DataType = System.Type.GetType("System.Double");
        col9.DataType = System.Type.GetType("System.String");

        pventries.Columns.Add(col1);
        pventries.Columns.Add(col2);
        pventries.Columns.Add(col3);
        pventries.Columns.Add(col4);
        pventries.Columns.Add(col5);
        pventries.Columns.Add(col6);
        pventries.Columns.Add(col7);
        pventries.Columns.Add(col8);
        pventries.Columns.Add(col9);

        pventries.Rows.Add();        

    }
} 

在我的代码隐藏文件中,我实例化了我的类并尝试按如下方式使用它:

    public partial class create_pv  : System.Web.UI.Page 
{
    String conn = WebConfigurationManager.ConnectionStrings["pvconn"].ToString();

    PaymentDetailsDataTable pmd = new PaymentDetailsDataTable();




    protected void Page_Load(object sender, EventArgs e)
    {


        /**/if(!IsPostBack)
            pmd.PaymentDetailsDataTable(); 
            allpventries.DataSource = pmd;
            allpventries.DataBind();
        }
}

现在,当我尝试访问这样的方法时PaymentDetailsDataTablepmd.PaymentDetailsDataTable()出现以下错误

'PaymentDetailsDataTable' does not contain a definition for 'PaymentDetailsDataTable' and no extension method 'PaymentDetailsDataTable' accepting a first argument of type 'PaymentDetailsDataTable' could be found (are you missing a using directive or an assembly reference?)  

如果我将我的方法返回类型(PaymentDetailsDataTable)更改为 void,它可以工作,但我稍后想将数据表绑定到网格视图(称为 allpventries),它会带来编译器错误。

如何从代码库位于不同类的数据表中绑定数据网格?稍后我将向数据表添加新行。实现这一目标的替代选择也是可以接受的。

在面向对象编程和 C# ASP.NET 方面非常新。

4

2 回答 2

2

您正在DataTable构造函数中创建一个PaymentDetailsDataTable从未分配给任何东西的局部变量。因此,您应该从方法返回 DataTable 或从DataTable. 我认为这是您的初衷:

public class PaymentDetailsDataTable : DataTable
{
    public PaymentDetailsDataTable()
    {
        DataColumn col1 = new DataColumn("col1");
        DataColumn col2 = new DataColumn("col2");
        DataColumn col3 = new DataColumn("col3");
        DataColumn col4 = new DataColumn("col4");
        DataColumn col5 = new DataColumn("col5");
        DataColumn col6 = new DataColumn("col6");
        DataColumn col7 = new DataColumn("col7");
        DataColumn col8 = new DataColumn("col8");
        DataColumn col9 = new DataColumn("col9");

        col1.DataType = System.Type.GetType("System.Int32");
        col2.DataType = System.Type.GetType("System.String");
        col3.DataType = System.Type.GetType("System.String");
        col4.DataType = System.Type.GetType("System.String");
        col5.DataType = System.Type.GetType("System.String");
        col6.DataType = System.Type.GetType("System.String");
        col7.DataType = System.Type.GetType("System.String");
        col8.DataType = System.Type.GetType("System.Double");
        col9.DataType = System.Type.GetType("System.String");

        this.Columns.Add(col1);
        this.Columns.Add(col2);
        this.Columns.Add(col3);
        this.Columns.Add(col4);
        this.Columns.Add(col5);
        this.Columns.Add(col6);
        this.Columns.Add(col7);
        this.Columns.Add(col8);
        this.Columns.Add(col9);

        this.Rows.Add();
    }
}
于 2012-09-27T09:19:48.413 回答
1

该类PaymentDetailsDataTable应该是返回对象引用的类的子类DataTable或在类中定义一个方法。PaymentDetailsDataTableDataTable

public class PaymentDetailsDataTable : DataTable
{
    public PaymentDetailsDataTable()
    {
        Columns.Add("Col1", typeof(int));
        Columns.Add("Col2");

        Rows.Add(1, "Foo");
        Rows.Add(2, "Bar");
    }
}

和 page_load 处理程序中的代码,

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
   {
      allpventries.DataSource = new PaymentDetailsDataTable();
      allpventries.DataBind();
   }
}
于 2012-09-27T09:16:59.427 回答