如何将自定义列标题设置为数据网格视图并显示数据表记录

本文关键字:视图 网格 数据网 显示 记录 数据表 数据 自定义 设置 标题 | 更新日期: 2023-09-27 18:28:20

QI希望显示来自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;
    }

为了在datagridview中绑定和显示,我在显示按钮单击事件上有以下内容。

 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.No、Name和Reg.Number。我该怎么做?请帮助提供一个代码示例。

如何将自定义列标题设置为数据网格视图并显示数据表记录

我想您无法更改SQL查询以获得所需的列名。因此,让我们修改DataGridView。

如果您在DataGridView中看到DataTable中的列名是列,那是因为它会自动生成列名。

如果你想在列中有自己的标题文本,你必须自己指定它们。

首先,您需要关闭列自动生成。对于在DataGridView中将AutoGenerateColumns设置为false

然后,您必须手动添加列,并在每列中指定等于SQL Server中实际列名的DataField值和等于您所需列显示名称的HeaderText值。

现在,当您绑定DataTable时,它将根据DataFieldHeaderText的值为DataGridView中的匹配列生成列。

请在此处查看示例以获取示例标记: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>
    

您必须在windows窗体上添加以下内容:

            1. dgr_donors.AutoGenerateColumns = false;
            2. dgr_donors.Columns.Add("id", "id");
            3. dgr_donors.Columns.Add("BCode", "BarCode");