2017-05-19 11 views
0

DataSourceにバインドされていない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]、[id] from t]のように選択部門のように各列に別名を付けたいとします。できる。部門を[deptGrid1]、顧客IDを[idFGrid1]として表から選択する必要があります。 –

+0

実行時にテーブルがユーザーによって選択されるので、私は列名を知らないでしょう。私はテーブル名からselect *をやっています。今私は、ユーザーが列にエイリアス名を与え、エイリアス名 – user3660473

+0

とテーブルを表示する必要がありますグリッドヘッダー名で表示するエイリアスだけ右か? –

答えて

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ステートメントにラップして処分する必要があります。なぜキャッチがエラーを再びスローするのかを試してみるのはなぜですか? –

+0

@SeanLangeこれはデモコードのためのものです。この男がクラスライブラリを使用しているかどうかはわかりません。 –

+0

私はそれを知っていますが、これ以上分からなければ接続プールが壊れてしまいます。 :) –

関連する問題