2013-03-27 46 views
-2

在我的C#代码中,我使用存储过程从数据库检索数据,并且动态创建表(我的意思是在.Net中的GUI表),并将行和列添加到该表动态地。我有4个表& 4个相应的存储过程。我不想为每个表编写一个方法,而是希望编写一个方法,该方法将从四个方法(4个按钮单击方法)中调用,因为只有存储过程名称&表名称将被更改,其他所有内容保持不变。我正在尝试使用下面的代码。使用字符串类型变量中存在的值作为表名

public String StoredProcName; //Values will be "GetFirstYearCSESubjects","GetSecondYearCSESubjects","GetThirdYearCSESubjects","GetFourthYearCSESubjects" 
    public String TableName; //Values will be "tblCSE1","tblCSE2","tblCSE3","tblCSE4" 
    protected void tabCSE1_Click(object sender, EventArgs e) 
    { 
     CSEView.ActiveViewIndex = 0;  
     StoredProcName = "GetFirstYearCSESubjects"; 
     TableName = "tblCSE1"; 
     phCSE1.Controls.Clear(); 
     Table tblCSE1 = new Table(); 
     phCSE1.Controls.Add(tblCSE1); 
     addCurriculumData(StoredProcName, TableName); 
     ViewState["dynamictable"] = true; 
    } 

    public void addCurriculumData(String StoredProcName,String TableName) 
    { 
     String strCon = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; 
     SqlConnection sqlCon = new SqlConnection(strCon); 
     SqlCommand cmd = new SqlCommand(StoredProcName, sqlCon); 
     cmd.CommandType = CommandType.StoredProcedure; 
     sqlCon.Open(); 
     SqlDataReader rdr = cmd.ExecuteReader(); 
     if (rdr.HasRows) 
     { 
      while (rdr.Read()) 
      { 
       TableRow tr = new TableRow(); 
       for (int j = 0; j < 1; j++) 
       { 
        TableCell tc = new TableCell(); 
        Label lbl = new Label(); 
        lbl.Text = rdr["Subject"].ToString(); 
        tc.Controls.Add(lbl); 
        tr.Cells.Add(tc); 
       } 
       TableName.Rows.Add(tr);***//How should I write this statement???*** 
      } 
     } 
     else 
      lblMessage.Text = "No Data found"; 
    } 

我不知道我该怎么写TableName.Rows.Add(tr)声明。由于TableName是一个字符串,它不能有行,因此会引发错误。所以我应该提到TableName而不是TableName的值。我应该怎么做?我可以使用指针的概念吗?我不太清楚指针。或者有另一种方法可以做到这一点?

在此先感谢

+4

你在开玩笑吧?互动你是否尝试过实例化一个'Table'类型的对象,并向它添加行而不是将它们添加到字符串中? – 2013-03-27 18:09:46

回答

0

通行证表(不串)的方法,并与表

public void addCurriculumData(String StoredProcName,Table table)