2014-07-06 3 views
0

listview에서 하나의 데이터베이스 레코드를 삭제하고 삭제 한 후 listView1.selectedindex 속성을 사용하여 내 listview에서 탐색하려고했지만 잘못된 레코드가 강조 표시되었습니다 예를 들어 listView1.selectedindex를 1로 설정했지만 인덱스가 0 인 레코드를 표시합니다. 뭐가 잘못 되었 니? 도와주세요!ASP.NET Listview.selectedindex 속성이 복잡해졌습니다

protected void deleteButton_Click(object sender, EventArgs e) 
{ 
    int id = int.Parse(((Label)ListView1.Items[ListView1.SelectedIndex].FindControl("idLabel")).Text); 

    using (SqlConnection conn = new SqlConnection(connStr)) 
    { 
     string Sql = "delete from Employee where id = @id"; 
     conn.Open(); 
     using (SqlCommand dCmd = new SqlCommand(Sql, conn)) 
     { 
      dCmd.Parameters.AddWithValue("@id", id); 
      dCmd.ExecuteNonQuery(); 
     } 
     conn.Close(); 
    } 
    BindDataFromBaseToListView(); 
} 

BindDataFromBaseToListView 방법은 너무 같습니다

대신 선택한 행의 값을 가져 당신이 아래의 코드처럼 원하는 항목을 삭제하는 당신이 당신의 ListView의 OnItemCommand 이벤트를 사용할 수 deleteButton_Click 이벤트를 사용
private void BindDataFromBaseToListView() 
{ 
    using (SqlConnection conn = new SqlConnection(connStr)) 
    { 
     conn.Open(); 
     using (SqlDataAdapter dAd = new SqlDataAdapter("select * from Employee", conn)) 
     { 
      DataTable dTable = new DataTable(); 
      dAd.Fill(dTable); 

      ListView1.DataSourceID = null; 
      ListView1.DataSource = dTable; 
      ListView1.DataBind(); 
     } 
     conn.Close(); 
    } 

답변

0

:

protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e) 
{ 
    if (e.CommandName == "delete") 
    { 
     int id = 0; 
     if(int.TryParse((e.Item.FindControl("idLabel") as Label).Text, out id)) 
     { 
      using (SqlConnection conn = new SqlConnection(connStr)) 
      { 
       string Sql = "delete from Employee where id = @id"; 
       conn.Open(); 
       using (SqlCommand dCmd = new SqlCommand(Sql, conn)) 
       { 
        dCmd.Parameters.AddWithValue("@id", id); 
        dCmd.ExecuteNonQuery(); 
       } 
       conn.Close(); 
      } 
      BindDataFromBaseToListView(); 
     } 
    } 
} 

컨트롤의 요소는 다음과 같습니다.

<asp:ListView ID="ListView1" runat="server" OnItemCommand="ListView1_ItemCommand" .. > 
    ... 
    <ItemTemplate> 
     <asp:Button runat="server" CommandName="delete" Text="Delete" ID="DeleteButton" /> 

    ... 

문제가 계속되면 알려주세요.

관련 문제