sqldatasource, ObjectDatasource 등을 사용하지 않고 GridView 및 기본 데이터 소스에서 행을 삭제하는 방법

StackOverflow https://stackoverflow.com/questions/813168

  •  03-07-2019
  •  | 
  •  

문제

두 열이있는 데이터 가능을 반환하는 메소드를 호출하여 채워지는 GridView가 있습니다. DataTable을 반환 한 후 GridView에 바인딩하여 표시합니다.

SQLDatasource 또는 ObjectDatasource를 사용하지 않으므로 GridView 및 데이터베이스의 기본 데이터에서 행을 삭제하는 적절한 방법은 무엇입니까? 포트폴리오라고하는 하나의 테이블에서 삭제하면됩니다. 3 개의 열, ID는 고유 한 키, 포트폴리오이드 및 포트폴리온 이름입니다. DataTable은 포트폴리온 이름과 포트폴리오의 항목 수를 반환합니다. 나는 다음과 같은 일을 할 Row_deleting 이벤트에서 이것을 할 수 있다고 생각했다.

DELETE * FROM Portfolio WHERE PortfolioID = @PortfolioID

내가 올바른 길을 가고 있는데 어떻게할까요? 포트폴리오이드를 GridView Datakey 속성에 바인딩 할 수 있습니까 (이를 수행하기위한 올바른 구문은 무엇입니까?)

도움이 되었습니까?

해결책

버튼 프레스에서 행을 삭제하고 있다고 가정합니다. 그렇다면 나는 보통 다음과 같은 일을합니다.

<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" 삭제 버튼을 얻으려면

다른 팁

나는 아마도 DB 콜을 거기보다 더 추상화 할 것입니다. 행 변경이 완료된 후에 행을 처리 할 것입니다. 후 처리의 경우 RowState를 확인하여 행의 데이터로 무엇을 해야하는지 결정할 수 있습니다.

이해했듯이 데이터베이스 테이블에서 제출 된 Datagrid View에서 행을 삭제하려고합니다. 이는 일부 데이터베이스에서 레코드를 삭제하고 테이블 레코드를 삭제하려는 것을 의미합니다. 이를 수행하는 가장 좋은 방법은 텍스트 상자를 어딘가에 놓고 DatagridView (행 선택 이벤트)에 대한 이벤트를 만드는 것입니다. 이런 식으로 해당 루로의 ID를 삭제하려는 행을 SELCT에 텍스트 상자로 전송합니다 (코딩됩니다). 행의 ID가있는 후에는 삭제하려는 버튼 하나를 추가하여 데이터베이스에서 레코드를 삭제하고 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:

portfolioid = ' "+convert.toint32 (this.portfolioid.text)+"';
}

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top