2009-05-01 4 views
1

2つの列を持つデータテーブルを返すメソッドを呼び出すことで、GridViewを作成しています。データテーブルを返すと、それをグリッドビューにバインドして表示します。SqlDataSource、ObjectDataSourceなどを使用せずにグリッドビューとその基礎となるデータソースの行を削除する方法

私はSqlDataSourceまたはObjectDataSourceを使用していないので、グリッドビューとデータベース内の基になるデータから行を削除する適切な方法は何ですか?私はちょうどポートフォリオと呼ばれる1つのテーブルから削除する必要があります。固有のキーであるPortfolioIDとPortfolioNameの3つの列IDがあります。データテーブルは、PortfolioNameとポートフォリオ内の項目数を返します。私は私のような何かをするだろうRow_Deletingイベントでこれを行うことが考えていた:

DELETE * FROM Portfolio WHERE PortfolioID = @PortfolioID 

私は正しい軌道に乗っていると私はこれをどのように行うのでしょうか? PortfolioIDをGridViewのDataKeyプロパティにバインドできますか(これを行うには正しい構文は何ですか?)

答えて

2

ボタンを押して行を削除するとします。あなたのコードビハインドに続いて

<asp:GridView ID="myGrid" runat="server" DataKeyNames='PortfolioID' OnRowCommand="dgStudent_RowCommand"> 
    <Columns> 
     <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Delete"></asp:ButtonField> 
    </Columns> 
</asp:GridView> 

:もしそうなら、私は通常、このような何かを

protected void myGrid_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    // create and open DB connection 
    int PortfolioID = (int)myGrid.DataKeys[Convert.ToInt32(e.CommandArgument)].Value; 
    DeleteRow(PortfolioID); // your implementation 
    myGrid.DataBind(); 
} 

DeleteRowは(あなたは上記の持っているかもしれないSQL)を削除するには、行の実装です。 myGridはあなたのグリッドです。 PortfolioIDが主キーです。これは、グリッド内の唯一のボタンが削除ボタンであることも前提としています。複数のボタンがある場合は、削除ボタンが表示されるようにe.CommandName=="Delete"にチェックする必要があります。

0

おそらく、DBコールをそこから抽象化することになります。行の変更が完了した後、おそらく行を処理します。後処理の場合は、行内のデータをどのように処理するかを決定するために行状態をチェックすることができます。

0

私はあなたがデータベーステーブルから提出されたデータグリッドビューから行を削除したいと思っていました。これは、データベースからテーブルレコードを削除したいことを意味します。 これを行う最善の方法は、テキストボックスをどこかに置いて、(行選択イベントの)datagridviewのイベントを作成することです。このようにして、そのローウスのIDを削除したい行を選択すると、テキストボックスに送られます(これはコード化されます)。削除したい行のIDを取得したら、データベース内のレコードを削除するボタンをもう1つ追加し、再度datagridviewをバインドします。削除

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 

     this.txt_portfolioId.Text=dataGridView1.CurrentRow.Cells["portfolioID"].Value.ToString(); 


    } 


private void btn_Delete(object sender, EventArgs e) 
    { 

     //You need to connect to database(regular database connection this connection string and sqlcommand and add this sqlquerry: 

* yourtableここportfolioid = ' "+ Convert.ToInt32(this.portfolioId.Text)+"' から。
}

関連する問題