Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用字符串类型变量中的值作为tablename_C#_.net_Dynamic - Fatal编程技术网

C# 使用字符串类型变量中的值作为tablename

C# 使用字符串类型变量中的值作为tablename,c#,.net,dynamic,C#,.net,Dynamic,在我的C#代码中,我使用存储过程从数据库中检索数据,并动态创建表(我是指.Net中的GUI表),并将行和列动态添加到该表中。我有4个表和4个各自的存储过程。我不想为每个表编写一个方法,而是想编写一个方法,该方法将从四个方法(4个按钮单击方法)调用,因为只有存储过程名和表名将被更改,其他所有内容都保持不变。我正在尝试使用下面的代码 public String StoredProcName; //Values will be "GetFirstYearCSESubjects","GetSec

在我的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";
    }
公共字符串StoredProcName//值将为“GetFirstYearcsSubjects”、“GetSecondYearcsSubjects”、“GetThirdYearcsSubjects”、“GetFourthYearcsSubjects”
公共字符串表名//值将为“tblCSE1”、“tblCSE2”、“tblCSE3”、“tblCSE4”
受保护的无效选项卡1\u单击(对象发送方,事件参数e)
{
CSEView.ActiveViewIndex=0;
StoredProcName=“GetFirstYearCSESubjects”;
TableName=“tblCSE1”;
phCSE1.Controls.Clear();
表tblCSE1=新表();
phCSE1.Controls.Add(tblCSE1);
添加课程数据(StoredProcName、TableName);
ViewState[“dynamictable”]=true;
}
public void addCoursulumData(String StoredProcName、String TableName)
{
String strCon=ConfigurationManager.ConnectionStrings[“ConStr”].ConnectionString;
SqlConnection sqlCon=新的SqlConnection(strCon);
SqlCommand cmd=新的SqlCommand(StoredProcName,sqlCon);
cmd.CommandType=CommandType.storedProcess;
sqlCon.Open();
SqlDataReader rdr=cmd.ExecuteReader();
if(rdr.HasRows)
{
while(rdr.Read())
{
TableRow tr=新的TableRow();
对于(int j=0;j<1;j++)
{
TableCell tc=新的TableCell();
标签lbl=新标签();
lbl.Text=rdr[“Subject”].ToString();
tc.对照组。添加(lbl);
tr.Cells.Add(tc);
}
TableName.Rows.Add(tr);***//该如何编写此语句***
}
}
其他的
lblMessage.Text=“未找到数据”;
}
我不知道该如何编写语句
TableName.Rows.Add(tr)
。由于TableName是一个字符串,它不能有行,因此会抛出错误。所以我应该提到TableName的值,而不是TableName。我该怎么做?我可以使用指针的概念吗?我不太确定指针。还是有别的办法

提前感谢

将表(而不是字符串)传递给方法并与表交互

public void addCurriculumData(String StoredProcName,Table table)

你在开玩笑吗??您是否尝试过实例化“Table”类型的对象并向其中添加行,而不是将它们添加到字符串中?