C# DataGrid的SortCommand事件处理程序不工作
我已经为DataGrid的onsort命令创建了一个事件处理程序:C# DataGrid的SortCommand事件处理程序不工作,c#,asp.net,events,webforms,C#,Asp.net,Events,Webforms,我已经为DataGrid的onsort命令创建了一个事件处理程序: <asp:DataGrid id="dtgBatches" runat="server" Width="100%" CssClass="intTable" EnableViewState="False" DataKeyField="bat_GUID" GridLines="Horizontal" AllowSorting="True" AutoGenerateColumns="False"
<asp:DataGrid id="dtgBatches" runat="server" Width="100%" CssClass="intTable" EnableViewState="False" DataKeyField="bat_GUID"
GridLines="Horizontal" AllowSorting="True" AutoGenerateColumns="False" AllowPaging="False" >
<SelectedItemStyle BackColor="#FFFF99"></SelectedItemStyle>
<AlternatingItemStyle CssClass="intTableEntry"></AlternatingItemStyle>
<ItemStyle CssClass="intTableEntry2"></ItemStyle>
<HeaderStyle ForeColor="Black" CssClass="tableHeader"></HeaderStyle>
<Columns>
<asp:TemplateColumn >
<HeaderStyle Width="5%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<img src="../images/icons/cog.png" onclick="universalAlert('Loading...',4,false); ViewBatch('<%# DataBinder.Eval(Container.DataItem, "bat_GUID") %>')" alt="view"/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="bat_Name" SortExpression="bat_Name" HeaderText="<%$ Resources:AI360Resource, lnkbtn_Name %>">
<HeaderStyle Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="bat_Id" SortExpression="bat_Id" HeaderText="<%$ Resources:AI360Resource, ltxt_ID %>">
<HeaderStyle Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="bat_Date" SortExpression="bat_Date" HeaderText="<%$ Resources:AI360Resource, alt_date %>" DataFormatString="{0:d}">
<HeaderStyle HorizontalAlign="right" Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Right"></ItemStyle>
</asp:BoundColumn>
<asp:TemplateColumn>
<HeaderStyle Width="1%"></HeaderStyle>
</asp:TemplateColumn>
<asp:BoundColumn DataField="bat_Close_date" SortExpression="bat_Close_date" HeaderText="<%$ Resources:AI360Resource, ltxt_closed %>" DataFormatString="{0:d}">
<HeaderStyle Width="29%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="bat_Cont_Amount" SortExpression="bat_Cont_Amount" HeaderText="<%$ Resources:AI360Resource, alt_receipts %>" DataFormatString="{0:c}">
<HeaderStyle Width="10%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="bat_Disb_Amount" SortExpression="bat_Disb_Amount" HeaderText="<%$ Resources:AI360Resource, alt_disb %>" DataFormatString="{0:c}">
<HeaderStyle Width="25%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
问题是处理程序从不执行
处理程序的注册操作如下所示:
protected void dtgBatches_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string strCurrentSort = dtgBatches.Attributes["SortExpr"];
string strNewSort = e.SortExpression;
if ((strCurrentSort != null) && (strCurrentSort == strNewSort))
{
//reverse direction
strNewSort += " DESC";
}
// Code to Set DataView dv
dv.Sort = strNewSort;
dtgBatches.DataSource = dv;
dtgBatches.DataBind();
}
private void InitializeComponent()
{
this.dtgBatches.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.dtgBatches_SortCommand);
}
ViewState
需要启用排序
您是否给网格和处理程序起了相同的名字?这段代码看起来无法编译。Grid->Mygrid handler->Mygrid\u sort命令编译代码后,网格生成数据,唯一的问题是排序。排序处理程序根本不执行。不过,请尝试使用更好的名称。这甚至可以解决问题,但至少代码会更有意义。是否启用了javascript?页面是否已发回?Java脚本已启用,页面也在发回。我在dtgBatches_SortCommand()中放置断点后正在尝试发回。这个转折点永远不会达到。谢谢,伙计,这才是真正的问题。我在启用视图状态后进行了尝试,现在一切似乎都正常。