Как установить настраиваемый заголовок столбца для просмотра таблицы данных и отображения записей с данными? - PullRequest
0 голосов
/ 20 марта 2012

Q Я хочу отобразить запрошенные записи с SQl Server, которые находятся в таблице с пользовательскими заголовками столбцов.Как я могу это сделать?

Моя функция запросов выглядит следующим образом:

        private DataTable GetRecords(int QID, DateTime FromDate, DateTime ToDate)
    {
        SqlConnection myConn = new SqlConnection(ConfigurationManager.ConnectionStrings["CONNSTRING"].ConnectionString);

        // Create the command and set its properties.
        SqlCommand command = new SqlCommand();
        command.Connection = myConn;
        command.CommandText = "sp_GetRecords";
        command.CommandType = CommandType.StoredProcedure;

        // Add the input parameter and set its properties.
        SqlParameter parameter1 = new SqlParameter();
        parameter1.ParameterName = "@QID";
        parameter1.SqlDbType = SqlDbType.Int; 
        parameter1.Direction = ParameterDirection.Input;
        parameter1.Value = QID;

        SqlParameter parameter2 = new SqlParameter();
        parameter2.ParameterName = "@FromDate";
        parameter2.SqlDbType = SqlDbType.DateTime;
        parameter2.Direction = ParameterDirection.Input;
        parameter2.Value = FromDate;

        SqlParameter parameter3 = new SqlParameter();
        parameter3.ParameterName = "@ToDate";
        parameter3.SqlDbType = SqlDbType.DateTime;
        parameter3.Direction = ParameterDirection.Input;
        parameter3.Value = ToDate;
        // Add the parameter to the Parameters collection. 
        command.Parameters.Add(parameter1);
        command.Parameters.Add(parameter2);
        command.Parameters.Add(parameter3);
         myConn.Open();
         SqlDataReader GetAgentTransactions = command.ExecuteReader();
         DataTable dt = new DataTable();
         dt.Load(GetAgentTransactions);             
         GetAgentTransactions.Close();
         myConn.Close();
         return dt;

    }

Для привязки и отображения в виде сетки данных у меня есть следующее при событии нажатия кнопки отображения.

 protected void btnShow_Click(object sender, EventArgs e)
    {
       DataTable table = new DataTable();
       table = GetRecords(1, Convert.ToDateTime(txtFromDate.Text.Trim()), Convert.ToDateTime(txtToDate.Text.Trim()));
       datagridview.DataSource = table;
       datagridview.DataBind();           
    }
       }

Я хочу, чтобы возвращаемые записи отображались под заголовками столбцов как Sl.Нет, Имя и Рег.Число.Как мне это сделать ?Пожалуйста, помогите с примером кода.

1 Ответ

2 голосов
/ 20 марта 2012

Я думаю, вы не можете изменить запросы SQL, чтобы получить имена столбцов так, как вы хотите.Итак, давайте изменим DataGridView.

Если вы видите имена столбцов из DataTable как они есть в DataGridView как столбцы, то это потому, что он автоматически генерирует их.

Если вы хотите свой собственный заголовоктекст в столбцах, вы должны указать их самостоятельно.

1-й, вам нужно отключить автогенерацию столбцов.Для этого установите AutoGenerateColumns в false в DataGridView.

Затем вам нужно добавить столбцы вручную и указать значения DataField в каждом столбце, равные реальному имени столбца из SQL Server и равные HeaderTextк желаемому отображаемому имени столбца.

Теперь, когда вы связываете DataTable, он будет генерировать столбцы для соответствующих столбцов в DataGridView в соответствии со значениями DataField и HeaderText.

Изучите пример здесь для примера разметки: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.columns.aspx

РЕДАКТИРОВАТЬ:

Вот пример разметки GridView, чтобы показать, как вы должны вручную настроить столбцы.

  1. Обратите внимание, что для AutoGenerateColumns установлено значение false
  2. DataField должно быть именем поля в базе данных.HeaderText должен быть вашим текстом.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" />
            <asp:BoundField DataField="FirstName" HeaderText="First Name" />
            <asp:BoundField DataField="LastName" HeaderText="Last Name" />
            <asp:BoundField DataField="DOB" HeaderText="Date Of Birth" />
        </Columns>
    
    </asp:GridView>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...