2012-12-03 73 views
1

我一直在寻找一个非常令人沮丧的问题。起初,RowDataBound事件在重写整个gridview之后并没有触发它的排序事件。这次它抱怨没有注册该事件的处理程序。这是个谎言!!!!!!!! 我已经尝试了很多东西,而且我在这一点上绝望,我真的不知道发生了什么。任何帮助将不胜感激。GridView事件不能正常工作

protected void ContactsSGV_Sorting2(object sender, GridViewSortEventArgs e) 
    { 
     var PLEASE_WORK = true; 
    } 
<CC:SortableGridView runat="server" ID="ContactsSGV" Width="100%" DataKeyNames="ContactID,ContactType" 
AllowPaging="True" AllowSorting="True" AutoGenerateColumns="false" OnRowDataBound="ContactsSGV_RowDataBound" 
OnPageIndexChanging="ContactsSGV_PageIndexChanging" OnSorting="ContactsSGV_Sorting2"> 
<Columns> 
<CC:SortableBoundField HeaderText="First Name" DataField="FirstName" SortExpression="FirstName" 
DefaultImageUrl="~/Images/sortable.png" AscImageUrl="~/Images/arrow-up.png" DescImageUrl="~/Images/arrow-dn.png" 
meta:resourcekey="BoundFieldFirstNameResource1" ItemStyle-Width="15%" /> 
<CC:SortableBoundField DataField="MiddleName" HeaderText="Middle Name" SortExpression="MiddleName" 
DefaultImageUrl="~/Images/sortable.png" AscImageUrl="~/Images/arrow-up.png" DescImageUrl="~/Images/arrow-dn.png" 
meta:resourcekey="BoundFieldMiddleNameResource1" ItemStyle-Width="15%" /> 
<CC:SortableBoundField DataField="LastName" HeaderText="Last Name" SortExpression="LastName" 
DefaultImageUrl="~/Images/sortable.png" AscImageUrl="~/Images/arrow-up.png" DescImageUrl="~/Images/arrow-dn.png" 
meta:resourcekey="BoundFieldLastNameResource1" ItemStyle-Width="15%" /> 
<CC:SortableBoundField DataField="Company" HeaderText="Company" SortExpression="LastName" 
DefaultImageUrl="~/Images/sortable.png" AscImageUrl="~/Images/arrow-up.png" DescImageUrl="~/Images/arrow-dn.png" 
meta:resourcekey="BoundFieldCompanyResource1" ItemStyle-Width="15%" /> 
<CC:SortableBoundField DataField="Email" HeaderText="Email" SortExpression="Email" 
meta:resourcekey="BoundFieldEmailResource1" DefaultImageUrl="~/Images/sortable.png" 
AscImageUrl="~/Images/arrow-up.png" DescImageUrl="~/Images/arrow-dn.png" ItemStyle-Width="16%" /> 
<CC:SortableBoundField DataField="Phone" HeaderText="Work Phone" SortExpression="Phone" 
DefaultImageUrl="~/Images/sortable.png" AscImageUrl="~/Images/arrow-up.png" DescImageUrl="~/Images/arrow-dn.png" 
meta:resourcekey="BoundFieldPhoneResource1" ItemStyle-Width="14%" /> 
<asp:TemplateField> 
<ItemTemplate> 
<asp:ImageButton ID="ViewButton" runat="server" Width="25px" Height="30px" ToolTip="View" 
CommandName="Select" CommandArgument='<%# Eval("ContactID") %>' ImageUrl="~/Images/View_24.png" 
meta:resourcekey="GVBtnViewResource1" /> 
</ItemTemplate> 
<ItemStyle HorizontalAlign="Center" Width="5%" /> 
</asp:TemplateField> 
<asp:TemplateField> 
<ItemTemplate> 
<asp:ImageButton ID="EditButton" runat="server" Width="25px" Height="30px" ToolTip="Edit" 
CommandName="Edit" ImageUrl="~/Images/Edit_32x32.png" meta:resourcekey="GVBtnEditResource1" /> 
</ItemTemplate> 
<ItemStyle HorizontalAlign="Center" Width="5%" /> 
</asp:TemplateField> 
</Columns> 
</CC:SortableGridView> 
System.Web.HttpException was unhandled by user code 
Message=The GridView 'ContactsSGV' fired event Sorting which wasn't handled. 
Source=System.Web 
ErrorCode=-2147467259 
WebEventCode=0 
StackTrace: 
at System.Web.UI.WebControls.GridView.OnSorting(GridViewSortEventArgs e) 
at CustomControls.SortableGridView.OnSorting(GridViewSortEventArgs e) in E:\Local\ProTrackPlus_GroupBy2+\CustomControls\SortableGridView.cs:line 314 
at System.Web.UI.WebControls.GridView.HandleSort(String sortExpression, SortDirection sortDirection) 
at System.Web.UI.WebControls.GridView.HandleSort(String sortExpression) 
at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) 
at System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) 
at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) 
at System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) 
at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) 
at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) 
at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) 
at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
InnerException: 

protected void ContactsSGV_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     //THIS ONE WORKS 
     var isItWorking = "YES IT IS OMG "; 
} 
protected void ContactsSGV_Sorting2(object sender, GridViewSortEventArgs e) 
{ 
//THIS IS HELL! 
var PLEASE_WORK = true; 
} 
public class SortableGridView : GridView{ 
//STUFF 
} 

protected override void OnSorting(GridViewSortEventArgs e) 
{ 
//This is inside my SortableGridView Class. 
//As you can see I am calling the base method and this in fact DOES WORK 
//Is my Handler on a page using this control that does not handle the raised event. 
setSortData(e.SortExpression); 
base.OnSorting(e); 
    } 

Working Event Not Working

为了避免进一步的重视第三方控制我改回GridView的到正规的ASP之一。 这就是现在的结构。 ...... 注意:没有足够的信誉来添加链接:(

+0

FYI - 一个'SortableGridView'是不一样的控制作为ASP'GridView'。 –

+0

NeverMind SortableGridView。这是我创建的一个控件,为了这个目的它可以完全替换为一个常规的gridview。 – Oxnigarth

+0

事实上,这个错误是从一个常规的asp GridView开始的,我试图用我自己的组件来替换它,看它是否有任何区别,它没有。 – Oxnigarth

回答

0

解决它!!!!! 所以事实证明,这是一个单线,它崩溃了整个事情。数据绑定包装函数中有一个ContactsSGV.Dispose()调用,它有效地解除了处理程序的绑定。不支付att因为我不知道它做了什么。我之前在其他网页上看到过我正在进行的项目,并没有造成任何麻烦。无论如何删除这条线使一切工作与常规gridview和我自己的组件。

http://forums.asp.net/t/1336965.aspx/1

问候
0X

0

SortableGridView你在页面中使用的是第三方控件,它不属于asp控件set.It是不一样的asp gridview控件。可能或可能没有onrowdatabound事件的机会,它将取决于控件创建者。您可以通过右键单击“SortableGridView”类并单击“定义”来查看SortableGridView类中使用的类和方法列表。

+0

该控件直接从asp控件继承。 onrowdatabound正在工作,之前没有工作,但后来它开始工作,onSorting处理程序停止工作。我是100%不是控制相关是某种损坏的数据的事情,或者我不知道我只是猜测。 我对我的代码示例进行了一些编辑,以便它不会对您使用这个其他控件造成太大的影响。 – Oxnigarth