GridView_RowDeleting未触发

时间:2013-06-05 13:58:37

标签: asp.net vb.net gridview delete-row

目前我正在asp.net中创建一个webapp。通常我使用sqlDataSource并启用分页和删除等,但在这种情况下我无法做到这一点。

我制作了一个GridView,它完美地显示了数据,我的RowDelete事件怎么没有触发

代码GridView:(仅限相关代码)

<asp:GridView ID="GridView1" 
    runat="server" 
    onpageindexchanging="GridView1_PageIndexChanging" 
    onrowdeleting="GridView1_RowDeleting">

    <Columns>
      <asp:TemplateField 
         HeaderStyle-CssClass="head"
         ItemStyle-CssClass="items"
         HeaderText="Klant">

         <ControlStyle ForeColor="#333333" />
         <HeaderStyle CssClass="head"></HeaderStyle>
         <ItemStyle CssClass="items" Font-Bold="False" ForeColor="#494C50" ></ItemStyle>
         <ItemTemplate>
            <asp:LinkButton ID="klant" runat="server"
              Text='<%#Eval("Bedrijf") %>'
              PostBackUrl='<%# "klant_wijzigen.aspx?Klant_ID="+Eval("Klant_ID").ToString()%>'></asp:LinkButton>
         </ItemTemplate>

      </asp:TemplateField>            

<asp:TemplateField 
    HeaderStyle-CssClass="head"
    ItemStyle-CssClass="items"
    HeaderText="Categorie">
    <ItemTemplate>

        <asp:LinkButton ID="categorie" runat="server"
        Text='<%#Eval("Categorie") %>'
        PostBackUrl='<%# "cat_wijzigen.aspx?Cat_ID="+Eval("Cat_ID").ToString()%>'>
        </asp:LinkButton>
    </ItemTemplate>

    <ControlStyle ForeColor="#333333" />

<HeaderStyle CssClass="head"></HeaderStyle>

<ItemStyle CssClass="items" Font-Bold="false" ></ItemStyle>
</asp:TemplateField>


<asp:BoundField 
    DataField="Website"
    headertext="Website"
    HeaderStyle-CssClass="head"
    ItemStyle-CssClass="items">
<HeaderStyle CssClass="head"></HeaderStyle>

<ItemStyle CssClass="items"></ItemStyle>
</asp:BoundField>


<asp:BoundField 
    HeaderStyle-CssClass="head"
    DataField="Titel"
    headertext="Titel" 
    ItemStyle-CssClass="items"            
>
<HeaderStyle CssClass="head"></HeaderStyle>

<ItemStyle CssClass="items"></ItemStyle>
</asp:BoundField>

<asp:TemplateField 
    HeaderStyle-CssClass="head2"
    ItemStyle-CssClass="items2">
    <ItemTemplate>


        <asp:Button ID="LinkButton1" 
            runat="server"                                         
            CausesValidation="False" 
            CommandName="Delete" Text="Delete"
            CssClass="verwijder"
            OnClientClick="return confirm
            ('Weet je zeker dat je het project wilt verwijderen?')">
        </asp:Button>

        <asp:Button ID="project" runat="server" 
            Text="Details"
            CssClass="details"
            PostBackUrl='<%#"Details.aspx?ID="+Eval("ID").ToString()%>' 
        />


    </ItemTemplate>

<HeaderStyle CssClass="head2"></HeaderStyle>

<ItemStyle CssClass="items2"></ItemStyle>
</asp:TemplateField>
</Columns>

<HeaderStyle CssClass="head"></HeaderStyle>
<AlternatingRowStyle BackColor="#e1e3e9" />
</asp:GridView>

正如你所看到的那样,它们都是有限的。删除按钮是LinkBut​​tton

这是我的剧本:

Protected Sub Gridview1_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs)
    GridView1.DeleteRow(e.RowIndex)
    GridView1.DataBind()
End Sub

我像这样绑定我的GridView:我已经使用2个不同的Select Queries创建了2个单独的SqlDataSources。基于我的下拉列表的SelectedValue选择SqlDataSource:

代码

Public Sub Wop() 'Here I set the IF statement.
    If DropDownList1.SelectedValue = 0 Then
        GridView1.DataSource = SqlDataSource4()
    Else
        GridView1.DataSource = SqlDataSource2()
    End If
    GridView1.DataBind()
End Sub


Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)     
    Wop() `Here is were I call the IF statement.
End Sub

任何线索都会受到赞赏。

请注意 我必须说我不是用C#写的!

1 个答案:

答案 0 :(得分:0)

您似乎在DeleteRow事件中呼叫RowDeleting。这没有任何意义,因为我会想到RowDeleting在调用DeleteRow之前不会被提升。

修改

来自MSDN:

  

使用DeleteRow方法以编程方式删除该记录   来自数据源的指定索引。通常使用此方法   当您需要从GridView控件外部删除记录时,   例如来自页面上的不同控件。 也可以调用此方法   引发RowDeleted和RowDeleting事件

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.deleterow.aspx