2011-03-07 92 views
1

我想从GridView中删除多行,但我很努力地发现是否勾选了一个复选框。Gridview多重删除

此刻我的代码并没有试图删除任何东西只是检查哪些复选框被选中,哪些不是。我的尝试没有显示任何复选框被检查,并似乎循环两次GridView行!

.ASPX

<asp:GridView ID="gvImages" DataKeyNames="id" runat="server" AutoGenerateColumns="False" BorderWidth="0px" GridLines="None"> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="imageId" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:ImageField DataImageUrlField="image_path" DataImageUrlFormatString="~/admin/images/{0}"></asp:ImageField> 
      <asp:BoundField DataField="id" /> 
     </Columns> 
    </asp:GridView> 
    <asp:Button 
     ID="btnMultipleRowDelete" 
     OnClick="btnMultipleRowDelete_Click" 
     runat="server" 
     Text="Delete Rows" /> 

后面的代码

Protected Sub btnMultipleRowDelete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnMultipleRowDelete.Click 

    ' Looping through all the rows in the GridView 
    For Each row As GridViewRow In gvImages.Rows 

     Dim checkbox As CheckBox = CType(row.FindControl("imageId"), CheckBox) 
     Dim rowID As Integer = Convert.ToInt32(gvImages.DataKeys(row.RowIndex).Value) 

     'Check if the checkbox is checked. 
     If checkbox.Checked Then 

      Response.Write("Deleted" & rowID & "<br />") 

     Else 

      Response.Write("Not deleted: " & rowID & "<br />") 

     End If 

    Next row 

End Sub 

感谢您的帮助。 J.

回答

1

你是否在Page_Load上绑定了你的GridView?

请确保您有If Not Page.IsPostBack Then在你的绑定:

If Not Page.IsPostBack Then 
    BindGridViewHere 
End If 

否则,当按钮被触发时,GridView会反弹,这意味着所有的复选框被重置!

+0

OnRowDeleting?我不是指这个事件。我做了一个非常类似的事情,当删除多行和重新绑定时发布回来也抓到我了 – Curt 2011-03-07 17:24:57

+0

谢谢柯特,这似乎是问题.....对不起,我在莫学习!再次感谢。 – JBoom 2011-03-07 17:26:41

+0

不用担心@JBoom。请标记为答案:) – Curt 2011-03-07 17:27:41