2013-06-05 93 views
0

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

我做了一个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个独立的SqlDataSources有2个不同的选择查询。根据我的下拉列表的选择的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#编写的!

+0

请问您发布'GridView'的其余部分,所以我们可以看到什么模板实际上样子?您定义行和删除按钮的方式也是相关信息。 – mclark1129

+0

@MikeC我已经添加了整个GridView – ErikMes

回答

0

您看起来像是从RowDeleting事件中调用DeleteRow。这没有任何意义,因为我认为RowDeleting不会被调用,直到DeleteRow被调用。

编辑:

从MSDN:

使用deleteRow方法即可从数据源的 指定索引处编程删除记录。当您需要从GridView控件的外部删除记录时,通常使用此方法 ,例如从页面上的其他控件删除记录。 调用此方法也 引发RowDeleted和RowDeleting事件

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

+0

Mhh我无法在我的书中找到任何这样的事情。要检查出来,愿意upvote,但我无法做到这一点呢。 – ErikMes