2012-03-20 27 views
0

QQカスタムヘッダーを持つテーブルにあるSQlサーバーからの照会済みレコードを表示します。どうしたらいいですか?バインドしたDataGridViewに表示するカスタム列ヘッダーをdatagridviewに設定してデータテーブルレコードを表示する方法は?

 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();   
    } 
     } 

返されたレコードを列見出しの下に表示するようにします。いいえ、名前と登録。数。どうしたらいいですか?コード例を参考にしてください。

答えて

1

私はあなたが望むようにカラム名を得るためにSQLクエリを変更することはできないと思います。では、DataGridViewを変更しましょう。

DataTableの列名が列としてDataGridViewに表示されている場合は、列名が自動的に生成されるためです。

カラムに独自のヘッダーテキストが必要な場合は、自分で指定する必要があります。

最初に列の自動生成をオフにする必要があります。 DataGridViewでそのセットAutoGenerateColumnsからfalseの場合。

次に、手動で列を追加し、各列にDataFieldの値をSQL Serverの実際の列名に、HeaderTextを列の表示名と同じに指定する必要があります。あなたがDataTableをバインドするとき

は、今ではDataFieldHeaderText値に従ってDataGridViewで一致する列の列を生成します。サンプルマークアップのために、ここで

アウト例:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.columns.aspx

EDIT:

ここでは、手動でセットアップ列に持っているか示すためのサンプルGridViewのマークアップです。

  1. AutoGenerateColumnsfalse
  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> 
    
+0

はい、私は直接のDataGridViewが直接私が起こることをしていないデータテーブルごとに列ヘッダーを設定しますバインドする場合。自分のヘッダーで列を表示したい。誰も同じもののための変更されたコードを投稿できますか? – Codebug

+0

Guganeshan:お返事ありがとうございます。 私はあなたの提案を試みました、私はちょうどグリッド領域に空白のパッチを取得しますが、ヘッダー/列/行は表示されません。ちょうど空白の空白。悲しいことにはうまくいかなかった。助言がありますか ? – Codebug

+0

@Codebug - サンプルのGridViewマークアップを表示するために私の答えを編集しました。独自のDataField名とHeaderTextを入れることができます。ホープが助けてくれる –

関連する問題