0

目前我正在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​​ton

这是我的脚本:

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

我像这样绑定我的 GridView:我用 2 个不同的选择查询创建了 2 个单独的 SqlDataSource。基于我的下拉列表的 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# 编写的!

4

1 回答 1

0

您看起来像是DeleteRow从您的RowDeleting活动中调用的。这没有任何意义,因为我想在被调用RowDeleting之前不会提出DeleteRow

编辑:

来自 MSDN:

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

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

于 2013-06-05T14:26:28.137 回答