Нужна помощь в выяснении gridview, что я делаю не так? - PullRequest
0 голосов
/ 29 июня 2010

Как я могу получить данные для отображения в виде сетки, кто-нибудь видит, что я делаю неправильно?

<asp:GridView ID="xTimeGridView"
 runat="server" AllowSorting="True" 
          AutoGenerateColumns="False">
            <Columns>
                <asp:BoundField DataField="CLOCK_IN_TIME"
 HeaderText="CLOCK_IN_TIME" 
                    SortExpression="CLOCK_IN_TIME" />
                <asp:BoundField DataField="CLOCK_OUT_TIME"
 HeaderText="CLOCK_OUT_TIME" 
                    SortExpression="CLOCK_OUT_TIME" />
            </Columns>

    string cmdquery = "SELECT * FROM EMPLOYEES WHERE BADGE ='" + Badge + "'";



            OracleCommand cmd = new OracleCommand(cmdquery);
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            conn.Open();
            using (OracleDataReader reader = cmd.ExecuteReader())
            {

                while (reader.Read())
                {
                    this.xUserNameLabel.Text += reader["EMPLOYEE_NAME"];
                    this.xDepartmentLabel.Text += reader["REPORT_DEPARTMENT"];


                }




            }
            conn.Close();

            string hrquery = "SELECT CLOCK_IN_TIME, CLOCK_OUT_TIME FROM CLOCK_HISTORY WHERE BADGE='" + Badge + "'";

            OracleCommand time = new OracleCommand(hrquery);
            time.Connection = conn;
            time.CommandType = CommandType.Text;
            conn.Open();

            using (OracleDataReader readers = time.ExecuteReader())
            {
                while (readers.Read())
                {

                    xTimeGridView.DataSource = readers;
                    xTimeGridView.DataBind();

                }


            }
            conn.Close();

1 Ответ

2 голосов
/ 29 июня 2010

О, у тебя проблема здесь.

Просто чтобы вы понимали, что происходит в вашем коде, вы пытаетесь открыть полученные данные и перебрать все это; Я не уверен, но я думаю, что вы эффективно повторно привязываете свой GridView к каждой строке данных в отдельности.

Вы не хотите перебирать все данные и «читать» их; вам нужно сохранить результаты вашего запроса в привязываемом объекте (например, в DataSet), чтобы вы могли приклеить к нему свое сеточное представление.

Попробуйте вместо этого что-то подобное, обязательно добавьте свой try / catch позже:

        OracleCommand time = new OracleCommand(hrquery);
        time.Connection = conn;
        time.CommandType = CommandType.Text;
        conn.Open();
        // new code starts below
        DataSet data = new DataSet("my data");
        OracleDataAdapter adapter = new OracleDataAdapter(time);
        adapter.Fill(data);
        conn.Close();

        xTimeGridView.DataSource = data;
        xTimeGridView.DataBind();
...