【问题标题】:Using the value present in String type variable as tablename使用字符串类型变量中存在的值作为表名
【发布时间】:2013-03-17 23:13:48
【问题描述】:

在我的 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 的值。我该怎么做?我可以使用指针的概念吗?我不太确定指针。还是有其他方法可以做到这一点?

提前致谢

【问题讨论】:

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

标签: c# .net dynamic


【解决方案1】:

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

public void addCurriculumData(String StoredProcName,Table table)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多