从数据库中逐行将数据写入文本框

时间:2015-04-15 04:29:41

标签: c# asp.net datareader

我想在表

中逐行显示数据库中的数据

enter image description here

如何将数据从数据库写入每个文本框行

(即)date activity1,activity2等然后下一行日期activity1,activyt2等。 如何编写正确的循环

我试图获取第一行数据的代码:

private void GetActivity()
    {
        try
        {
            CON = new OracleConnection(Connection);
            CON.Open();
            OracleCommand COMMAND1 = new OracleCommand("Select ACTIVITYID,to_char(ACTIVITYDATE,'DD-MON-YYYY') as ACTIVITYDATE,TITLE,STARTTIME,ENDTIME,ACTIVITYTIME as TIMETAKEN from DAILY_ACTIVITIES1 where ACTIVITYDATE= (Select min(ACTIVITYDATE) from DAILY_ACTIVITIES1)", CON);

            OracleDataReader READER = COMMAND1.ExecuteReader();            
            int count = READER.FieldCount;

            if (READER.HasRows)
            {
                while (READER.Read())
                {
                    if (Date1TextBox.Text == "")
                    {
                        Date1TextBox.Text = READER[1].ToString();
                        Date1TextBox.Enabled = false;
                    }

                    if (D1A1TextBox.Text == "")
                    {
                        D1A1TextBox.Text = "Title:" + READER[2].ToString() + "\n";
                        D1A1TextBox.Text += "Start-time:" + READER[3].ToString() + "\n";
                        D1A1TextBox.Text += "End-time:" + READER[4].ToString() + "\n";
                        D1A1TextBox.Text += "Timetaken:" + READER[5].ToString() + "\n";
                        D1A1TextBox.Enabled = false;
                    }
                    else
                    {
                        D1A1TextBox.Enabled = false;
                    }

                    if (D1A2TextBox.Text == "")
                    {
                        D1A2TextBox.Text = "Title:" + READER[2].ToString() + "\n";
                        D1A2TextBox.Text += "Start-time:" + READER[3].ToString() + "\n";
                        D1A2TextBox.Text += "End-time:" + READER[4].ToString() + "\n";
                        D1A2TextBox.Text += "Timetaken:" + READER[5].ToString() + "\n";
                        D1A2TextBox.Enabled = false;
                    }
                    else
                    {
                        D1A2TextBox.Enabled = false;
                    }

                    if (D1A3TextBox.Text == "")
                    {
                        D1A3TextBox.Text = "Title:" + READER[2].ToString() + "\n";
                        D1A3TextBox.Text += "Start-time:" + READER[3].ToString() + "\n";
                        D1A3TextBox.Text += "End-time:" + READER[4].ToString() + "\n";
                        D1A3TextBox.Text += "Timetaken:" + READER[5].ToString() + "\n";
                        D1A3TextBox.Enabled = false;
                    }
                    else
                    {
                        D1A3TextBox.Enabled = false;
                    }

                    if (D1A4TextBox.Text == "")
                    {
                        D1A4TextBox.Text = "Title:" + READER[2].ToString() + "\n";
                        D1A4TextBox.Text += "Start-time:" + READER[3].ToString() + "\n";
                        D1A4TextBox.Text += "End-time:" + READER[4].ToString() + "\n";
                        D1A4TextBox.Text += "Timetaken:" + READER[5].ToString() + "\n";
                        D1A4TextBox.Enabled = false;
                    }
                    else
                    {
                        D1A4TextBox.Enabled = false;
                    }

                    if (D1A5TextBox.Text == "")
                    {
                        D1A5TextBox.Text = "Title:" + READER[2].ToString() + "\n";
                        D1A5TextBox.Text += "Start-time:" + READER[3].ToString() + "\n";
                        D1A5TextBox.Text += "End-time:" + READER[4].ToString() + "\n";
                        D1A5TextBox.Text += "Timetaken:" + READER[5].ToString() + "\n";
                        D1A5TextBox.Enabled = false;
                    }
                    else
                    {
                        D1A5TextBox.Enabled = false;
                    }

                    if (D1A6TextBox.Text == "")
                    {
                        D1A6TextBox.Text = "Title:" + READER[2].ToString() + "\n";
                        D1A6TextBox.Text += "Start-time:" + READER[3].ToString() + "\n";
                        D1A6TextBox.Text += "End-time:" + READER[4].ToString() + "\n";
                        D1A6TextBox.Text += "Timetaken:" + READER[5].ToString() + "\n";
                        D1A6TextBox.Enabled = false;
                    }
                    else
                    {
                        D1A6TextBox.Enabled = false;
                    }
                }
            }          
            CON.Close();
        }

        catch (Exception et)
        {
            et.ToString();
        }
    }

3 个答案:

答案 0 :(得分:2)

@kumartyr,根据您的需要,您不想使用Gridview。

所以,我重写了动态文本框访问的GetActivity()功能。

private void GetActivity()
{
    try
    {
        CON = new OracleConnection(Connection);
        CON.Open();
        OracleCommand COMMAND1 = new OracleCommand("Select ACTIVITYID,to_char(ACTIVITYDATE,'DD-MON-YYYY') as ACTIVITYDATE,TITLE,STARTTIME,ENDTIME,ACTIVITYTIME as TIMETAKEN from DAILY_ACTIVITIES1 where ACTIVITYDATE= (Select min(ACTIVITYDATE) from DAILY_ACTIVITIES1)", CON);

        OracleDataReader READER = COMMAND1.ExecuteReader();
        int count = READER.FieldCount;

        if (READER.HasRows)
        {
            int i = 1;
            TextBox txtDate;
            TextBox txtDA;
            ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("MainContent");
            while (READER.Read() && i <= 6)
            {
                if (i == 1)
                {
                    txtDate = (TextBox)cph.FindControl(string.Format("Date{0}TextBox", i.ToString()));
                    txtDate.Text = READER[1].ToString();
                    txtDate.Enabled = false;
                }

                txtDA = (TextBox)cph.FindControl(string.Format("D1A{0}TextBox", i.ToString()));
                if (txtDA.Text == "")
                {
                    txtDA.Text = "Title:" + READER[2].ToString() + "\n";
                    txtDA.Text += "Start-time:" + READER[3].ToString() + "\n";
                    txtDA.Text += "End-time:" + READER[4].ToString() + "\n";
                    txtDA.Text += "Timetaken:" + READER[5].ToString() + "\n";
                }
                txtDA.Enabled = false;
                i++;
            }
        }
        CON.Close();
    }

    catch (Exception et)
    {
        et.ToString();
    }
}

答案 1 :(得分:0)

使用GridView并将OracleCommand绑定为DataSource。您可以自定义每个单元格以显示所需的数据,并且您不必进行任何循环或手动添加数千个文本框。

这里有大量示例的文档: https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview(v=vs.110).aspx

答案 2 :(得分:0)

您使用的是GridView吗?,您可以在RowDataBound事件中创建行模板并一次性绑定网格视图

这些是绑定gridview的简单方法。 this是一个非常好的例子