2012-04-24 2 views
0

업데이트 패널 안에 gridview가 있습니다. gridview에 이미지 버튼이 있습니다. 단추는 행을 삭제하는 데 사용됩니다.gridview delete가 발생하지만 gridview가 새로 고침되지 않습니까?

protected void gvLineItems_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      GridViewRow row = (GridViewRow)((Control)e.CommandSource).NamingContainer; 

      switch (e.CommandName) 
      { 
       case "Delete": 
        Label l = null; 
        l = (Label)row.FindControl("lblLineItemID"); 

        if(l!=null) 
        { 
         long lID; 
         lID = Convert.ToInt64(l.Text); 
         BL.DeleteLineItem(Convert.ToInt64(hlID.Text), lID); 
         BindGrid(Session["SortExpression"].ToString(), Convert.ToInt32(rbSortGrid.SelectedValue)); 
        } 
        break; 
      } 
     } 

내가 이것을 디버깅 내가 (데이터가 올바르게 삭제) 데이터베이스에서 삭제 된 행을 참조하십시오 그리드 뷰의 rowCommand 이벤트에서

나는 이런 일을한다. 그러나 gridview 여전히 바인드 그리드 후 "삭제 된"행을 보여줍니다.

protected void BindGrid(string sortExpression, int sortDirection) 
     { 
      DataSet ds 

      ds = BL.GetLineItemGridData(Convert.ToInt64(hlID.Text), sortExpression, sortDirection); 

      gvLineItems.DataSource = ds.Tables[0]; 
      gvLineItems.DataBind(); 
      gvLineItems.Visible = true; 
     } 

데이터 집합이 올바른 행을 반환 (삭제 된 행없이)하지만 웹 페이지를 볼 때 여전히 삭제 된 행을 보여줍니다 바인딩 그리드는 간단하게는 다음과 같습니다.

편집

사람이있는 gridview의 HTML을 요청, 여기있다 : 나는 그것을 가지고

<asp:UpdatePanel ID="myPanel" runat="server" UpdateMode="Always"> 
      <ContentTemplate> 
       <asp:GridView GridLines="Horizontal" CellPadding="4" Font-Size="Small" 
        DataKeyNames="ID" Width="100%" AlternatingRowStyle-BackColor="#e5f1fa" 
        BackColor="#E8E8E8" HeaderStyle-ForeColor="White" 
        HeaderStyle-BackColor="#1367AD" ID="gvLineItems" runat="server" 
        AllowSorting="True" AutoGenerateColumns="False" ShowFooter="True" 
        onrowcommand="gvLineItems_RowCommand" > 
        <Columns> 
        <asp:TemplateField> 
         <ItemStyle Width="1px" /> 
         <ItemTemplate> 
          <asp:Label Width=".05px" ID="lblLineItemID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ID") %>' style="display:none"></asp:Label> 
         </ItemTemplate> 
         <ControlStyle Width="0px" /> 
         <HeaderStyle Width="0px" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <HeaderTemplate> 
          <asp:CheckBox ToolTip="Select/Deselect all rows?" ID="HeaderLevelCheckBox" onclick="toggleSelection(this);" runat="server" /> 
         </HeaderTemplate> 
         <ItemTemplate> 
          <asp:CheckBox ID="chkSelector" ToolTip="Select row?" runat="server" onclick="ChangeRowColor(this)" /> 
         </ItemTemplate> 
         <ItemStyle HorizontalAlign="Center" /> 
         <HeaderStyle HorizontalAlign="Center" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <ItemTemplate> 
         <asp:ImageButton ID="ibAddLineItem" runat="server" ImageUrl="images/InsertRow.gif" CommandName="Insert" ToolTip="Insert new line item."/> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <ItemTemplate> 
         <asp:ImageButton ID="ibDeleteLineItem" runat="server" ImageUrl="images/DeleteRow.gif" CommandName="Delete" ToolTip="Delete line item."/> 
         </ItemTemplate> 
        </asp:TemplateField>       
        <asp:TemplateField HeaderText="Item #" SortExpression="LineItemNumber"> 
         <ItemTemplate> 
          <asp:Label runat="server" ID="lblItemNumber" Visible="True" Text='<%# DataBinder.Eval(Container, "DataItem.LineItemNumber") %>' /> 
         </ItemTemplate> 
         <ItemStyle Width="10%" HorizontalAlign="Center" /> 
         <HeaderStyle HorizontalAlign="Center" Width="10%" /> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Quantity" SortExpression="LineItemQuantity"> 
          <ItemTemplate> 
           <asp:TextBox Font-Names="Arial" ToolTip="Enter item quantity." ID="txtLineItemQuantity" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.LineItemQuantity") %>' /> 
           </ItemTemplate> 
           <ItemStyle Width="4%" HorizontalAlign="Center" /> 
           <HeaderStyle HorizontalAlign="Center" Width="4%" /> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Description" SortExpression="LineItemDescription"> 
          <ItemTemplate> 
           <asp:TextBox Columns="15" Width="300px" Font-Names="Arial" ToolTip="Enter item description." ID="txtLineItemDescription" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.LineItemDescription") %>' /> 
           </ItemTemplate> 
           <ItemStyle Width="15%" HorizontalAlign="Left" /> 
           <HeaderStyle HorizontalAlign="Left" /> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Added By" SortExpression="AddedBy"> 
         <ItemTemplate> 
          <asp:Label runat="server" ID="lblAddedBy" Visible="True" Text='<%# DataBinder.Eval(Container, "DataItem.AddedBy") %>' /> 
         </ItemTemplate> 
         <ItemStyle Width="10%" HorizontalAlign="Center" /> 
         <HeaderStyle HorizontalAlign="Center" Width="10%" /> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Added On" SortExpression="AddedOn"> 
         <ItemTemplate> 
          <asp:Label runat="server" ID="lblAddedOn" Visible="True" Text='<%# DataBinder.Eval(Container, "DataItem.AddedOn") %>' /> 
         </ItemTemplate> 
         <ItemStyle Width="10%" HorizontalAlign="Center" /> 
         <HeaderStyle HorizontalAlign="Center" Width="10%" /> 
        </asp:TemplateField> 
        </Columns> 
       </asp:GridView> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="btnAddLineItem" /> 
       <asp:AsyncPostBackTrigger ControlID="rbSortGrid" /> 
      </Triggers> 
     </asp:UpdatePanel> 
+0

업데이트 패널 – Adil

+0

@Adil을 포함한 html 표를 추가 할 수 있습니까? 추가했습니다. – oJM86o

+0

삭제 한 레코드가 삭제 된 후에 해당 삭제 된 행이 존재합니까? 즉이 줄 "ds = BL.GetLineItemGridData (Convert.ToInt64 (hlID.Text), sortExpression, sortDirection);" 나는 이것이 당신이 의미하는 바라고 믿습니다. – Etch

답변

0

잘못 난 그냥이 추가 :

protected void gvLineItems_RowDeleting(object sender, GridViewDeleteEventArgs e) 
     { 
      DataSet ds = null; 
      gvLineItems.DataSource = null; 
      ds = BL.GetLineItemGridData(Convert.ToInt64(hlID.Text), Session["SortExpression"].ToString(), Convert.ToInt32(rbSortGrid.SelectedValue)); 

      gvLineItems.DataSource = ds.Tables[0]; 
      gvLineItems.DataBind(); 
      gvLineItems.Visible = true; 
     } 

을하고 전화를 제거 BindGrid부터 :

protected void gvLineItems_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      GridViewRow row = (GridViewRow)((Control)e.CommandSource).NamingContainer; 

      switch (e.CommandName) 
      { 
       case "Delete": 
        Label l = null; 
        l = (Label)row.FindControl("lblLineItemID"); 

        if(l!=null) 
        { 
         long lID; 
         lID = Convert.ToInt64(l.Text); 
         BL.DeleteLineItem(Convert.ToInt64(hlID.Text), lID); 
         //BindGrid(Session["SortExpression"].ToString(), Convert.ToInt32(rbSortGrid.SelectedValue)); 
        } 
        break; 
      } 
     } 
0

또는 제어 이벤트 처리가 완료된 후에 발생하는 Page PreRender 이벤트에서 GridView를 바인딩 할 수 있습니다. rowCommand 이벤트에서 데이터 소스를 연결하고 그리드를 바인딩 할 필요가 없습니다.

관련 문제