2011-08-09 7 views
0

私はautogenerateをtrueに設定すると設定されます。しかし、私はそれを必要としません。GridViewにデータが入力されないのはなぜですか?

<asp:GridView runat="server" ID="Gridview2" Visible="true" AutoGenerateColumns="false"></asp:GridView> 


protected void submitButton_Click(object sender, EventArgs e) 
    { 
     Database db = DatabaseFactory.CreateDatabase("ConnectionString"); 
     DataTable dt = new DataTable(); 
     DataColumn dc; 
     DataSet ds = new DataSet(); 

     try 
     { 
      DbCommand dbCommand = db.GetStoredProcCommand("sel_ResultByID_p"); 
      db.AddInParameter(dbCommand, "@pID", DbType.Int16, _id); 
      ds = db.ExecuteDataSet(dbCommand); 

      dc = new DataColumn(); 
      dc.ColumnName = "FullName"; 
      dt.Columns.Add(dc); 

      DataRow dr; 
      dr = dt.NewRow(); 
      dr["FullName"] = ds.Tables[0].Rows[0]["FullName"]; 

      dt.Rows.Add(dr); 

      Gridview2.DataSource = ds; 
      Gridview2.DataBind(); 
     } 

     catch(Exception ex) 
     { 

     } 
    } 
+0

私が考えることができるのは、行を追加する前に 'DataSource' *を設定することだけです。私は実質的に同一のコードを持っています(それとは別に)。なぜ現時点で見ることができない - したがって、答えではなくコメント。 – ChrisF

答えて

5

あなたはこのように、手動でGridViewの列を

AutoGenerateColumns="true" 

を設定するか、指定することもあります:あなたは何をやっていません

<asp:GridView runat="server" ID="Gridview2" Visible="true" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="FullName" HeaderText="Full Name" /> 
    </Columns> 
</asp:GridView> 

アップデートは

これは、あなたが背後にあるコードでそれを行うだろうかです:

BoundField bf = new BoundField(); 
bf.DataField = "YourFieldName"; 
bf.HeaderText = "Your Header"; 
Gridview2.Columns.Add(bf); 
+0

プログラムで列を指定する必要がありますか?これどうやってするの? – bronco88

+0

ASPXでは、例として示すように 'Columns'タグを追加します。あなたの 'sel_ResultByID_p'が何を返すのか分からないので、これは単なる例であり、あなたのニーズに適応させることを覚えておいてください。 –

+0

私はコードビハインドでこれを行う必要があります。それをどうすれば実現できますか? – bronco88

0

は非同期で実行をクリックしますか?そうでなければ、基本的には投稿を終わらせていますが、クリック機能が実行された後にデータがなくなるため、ページが再読み込みされるだけです。

0

あなたは、列の自動生成をオフにした場合、あなたは例えば、テンプレート列に

を使用して、表示する列を指定することができます。

+0

バー、元の書式設定についてはごめん。 – Xiphos

関連する問題