2012-03-04 10 views
0

私は、この質問が以前に何回か尋ねられ、答えられていることをかなり確信しています。しかし、もう一度答えを求めています。私のGridViewはここにありますC#2.0の列を持つグリッドビューに行を追加するにはどうすればよいですか?

<asp:GridView ID="dgvGeneralBillList" runat="server" style="font-size:11px;margin:10px auto auto 30px;width:500px;" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" OnSelectedIndexChanged="dgvGeneralBillList_SelectedIndexChanged"> 
      <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
      <Columns> 
       <asp:BoundField DataField="BillID" HeaderText="Bill ID" Visible="False" /> 
       <asp:BoundField DataField="SerialNo" HeaderText="Bill No" /> 
       <asp:BoundField DataField="BilledWeekNo" HeaderText="Billed Week" /> 
       <asp:BoundField DataField="BilledWeekDate" HeaderText="Billed Date" /> 
       <asp:BoundField DataField="Amount" HeaderText="Amount" /> 
       <asp:BoundField DataField="BillStatus" HeaderText="Bill Status" /> 
       <asp:CommandField SelectText="Print" ShowSelectButton="True" /> 
      </Columns> 
      <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <EditRowStyle BackColor="#999999" /> 
      <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
     </asp:GridView> 

実行時にこのグリッドビューに行を追加します。他の記事では、DataTableを定義し、次にその表にADD my desired COLUMNSを定義し、次にADD rows in that TABLE、最後にBIND the table to the GridViewと定義することをお勧めします。はい、これは問題を解決し、私もそれを行うことができます。しかし、私がやりたいことは、すでに列が私のgridviewに追加されているので、私は単に行を追加したいだけです。 とし、データテーブルを定義してからGridViewのものにバインドします。私は、以下の

oOutputBill = (clsBill[])oOutput; 
      if (oOutputBill.Length > 0) 
      { 
       for (int i = 0; i < oOutputBill.Length; i++) 
       { 
        GridViewRow oRow = new GridViewRow(); 
        oRow.Cells[0].Text = Convert.ToString(oOutputBill[i].BillID); 
        oRow.Cells[1].Text = Convert.ToString(oOutputBill[i].SerialNo); 
        oRow.Cells[2].Text = Convert.ToString(oOutputBill[i].BilledWeekNo); 
        oRow.Cells[3].Text = Convert.ToString(oOutputBill[i].BilledWeekDate); 
        oRow.Cells[4].Text = Convert.ToString(oOutputBill[i].Amount); 
        oRow.Cells[5].Text = Convert.ToString(oOutputBill[i].BillStatus); 
       } 
      } 

を試してみましたが、予想通り、それはエラーを与える「メソッドGridViewRowの過負荷が0の引数を取りません」。どうすればこれを達成できますか?前もって感謝します。

答えて

0

これは私が解決策として、今使っているものです。

<asp:GridView ID="dgvGeneralBillList" runat="server" style="font-size:11px;margin:10px auto auto 30px;width:auto;" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" OnSelectedIndexChanged="dgvGeneralBillList_SelectedIndexChanged"> 
      <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
      <Columns> 
       <asp:BoundField DataField="BillID" HeaderText="Bill ID" /> 
       <asp:BoundField DataField="SerialNo" HeaderText="Bill No" /> 
       <asp:BoundField DataField="BilledWeekNo" HeaderText="Billed Week" /> 
       <asp:BoundField DataField="BilledWeekDate" HeaderText="Billed Date" /> 
       <asp:BoundField DataField="Amount" HeaderText="Amount" /> 
       <asp:BoundField DataField="BillStatus" HeaderText="Bill Status" /> 
       <asp:CommandField SelectText="Print" ShowSelectButton="True" /> 
      </Columns> 
      <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <EditRowStyle BackColor="#999999" /> 
      <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
     </asp:GridView> 

そして

oOutputBill = (clsBill[])oOutput; 
      if (oOutputBill.Length > 0) 
      { 
       dgvGeneralBillList.DataSource = oOutputBill; 
       dgvGeneralBillList.DataBind(); 
       dgvGeneralBillList.Visible = true; 
      } 

IS-行を追加する方法は - 私のGridViewのは、この答えは、テーブルを定義する表に列を追加し、テーブルに行を追加し、最終的にテーブルを結合するのに似ていますグリッドビューには少ないコードでこのようにして、グリッドビューで定義された列のみがデータソースにバインドされます。 のDataColumn、あなたがに似た何かをしたい場合はをOnSelectedIndexChangedし、GridViewのから任意のデータを取得しよう、ということに注意ししてくださいはは、GridViewの中VISIBLEを定義する必要があります。しかし、誰かが私の質問として私にサンプルコードを提供することができれば、それは高く評価されるだろう。

1

Thisリンクが役立ちます。

しかし、GridViewをDataSourceでバインドすることをお勧めします。 データをセッションに保存するだけで、行を手動でGridViewに追加するのではなく、保存したデータに新しい行を追加してグリッドを再バインドします。

例:

// If you have List of clsBill. 
List<clsBill> oOutputBill = 'Filled from DB...'; 

// Save Data into session 
Session["oOutputBill"] = oOutputBill; 

// Bind your GridView 
dgvGeneralBillList.DataSource = Session["oOutputBill"]; 
dgvGeneralBillList.DataBind(); 

... 

// Get saved data and insert new row 
List<clsBill> oOutputBill = Session["oOutputBill"] as List<clsBill>; 

if(oOutputBill != null) 
{ 
    oOutputBill.Add(new clsBill() { /* Fill class properties */ }); 

    // Rebind grid 
    dgvGeneralBillList.DataSource = Session["oOutputBill"]; 
    dgvGeneralBillList.DataBind(); 
} 
+0

お返事ありがとうございます@Vano –

関連する問題