-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的值。我应该怎么做?我可以使用指针的概念吗?我不太清楚指针。或者有另一种方法可以做到这一点?
在此先感谢
你在开玩笑吧?互动你是否尝试过实例化一个'Table'类型的对象,并向它添加行而不是将它们添加到字符串中? – 2013-03-27 18:09:46