在GridView列中给出一个别名C#

问题描述:

我有一个不是DataSource绑定的GridView。在运行时,这个GridView在运行时显示一些行。有一个要求,用户应该能够在运行时更改列标题文本。所以我想以这种方式实现 -在GridView列中给出一个别名C#

用户将在列标题上双击[或单击]并且用户将看到文本框,其中用户将输入新文本,并且只要用户离开文本框中,新的列标题文本将被设置为该列的HeaderText属性。这能实现吗?任何人都可以分享示例代码来实现相同的目标吗?我将非常感谢你。任何帮助将是可观的。

这是我的网

<asp:GridView ID="GdvTestData" runat="server" 
     class="table table-striped table-responsive table-hover" 
     onrowdatabound="gv_RowDataBound" 
     PageSize="100" OnSelectedIndexChanged="GdvTestData_SelectedIndexChanged"> 
       <FooterStyle BorderStyle="Solid" /> 
</asp:GridView> 
+0

这里您要为每个列提供别名,如选择部门中的[dept],customerid as [id] from t能够。应该从表中选择部门为[deptGrid1],customerid为[idFGrid1]。 –

+0

由于用户在运行时选择表,因此我不会知道列名。我正在做select * from table name。现在,我需要允许用户给别名赋予列,并显示别名为 – user3660473

+0

的表,并且您希望仅在网格标题名称上显示的别名正确吗? –

这里是你可以做的绑定别名与列 下面的事情是ASPX代码

<asp:DropDownList runat="server" ID="ddlQuery"> 
      <asp:ListItem Text="Query1" Value="1" Selected="True"></asp:ListItem> 
      <asp:ListItem Text="Query2" Value="2"></asp:ListItem> 
      <asp:ListItem Text="Query3" Value="3"></asp:ListItem> 
     </asp:DropDownList> 
     <asp:TextBox runat="server" ID="txtAlias"></asp:TextBox> 
     <asp:Button runat="server" ID="btnGetData" Text="GetData" OnClick="btnGetData_Click" /> 
     <asp:GridView runat="server" ID="gcData"></asp:GridView> 

和代码在CS数据绑定到网格低于

protected void btnGetData_Click(object sender, EventArgs e) 
     { 
      GetData(); 
     } 

     private void GetData() 
     { 
      SqlConnection con = new SqlConnection(); 
      con.ConnectionString = "Connection String"; 

      string Query = string.Empty; 
      if (ddlQuery.SelectedValue == "1") 
       Query = "SELECT * FROM Table1"; 
      else if (ddlQuery.SelectedValue == "2") 
       Query = "SELECT * FROM Table2"; 
      else if (ddlQuery.SelectedValue == "3") 
       Query = "SELECT * FROM Table3"; 

      try 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand(); 
       cmd.Connection = con; 
       cmd.CommandText = Query; 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 

       DataTable dtFinal = new DataTable(); 
       foreach (DataColumn cln in dt.Columns) 
       { 
        dtFinal.Columns.Add(cln.ColumnName + " " + txtAlias.Text, cln.DataType); 
       } 
       foreach (DataRow row in dt.Rows) 
       { 
        DataRow dr = dtFinal.NewRow(); 
        for (int i = 0; i < dtFinal.Columns.Count; i++) 
        {      
         dr[i] = row[i];       
        } 
        dtFinal.Rows.Add(dr); 
       } 
       gcData.DataSource = dtFinal; 
       gcData.DataBind(); 
      } 
      catch (Exception) 
      { 
       throw; 
      } 

     } 
+0

您应该将连接和命令对象包装在USING语句中,以便将其处理掉。以及为什么试图捕捉catch再次抛出错误的地方? –

+0

@SeanLange这只是一个演示代码我不知道这个人是否已经使用任何类库 –

+0

我明白了,但如果他们不知道更好,这将破坏他们的连接池。 :) –