Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net:排序、GridView BoundColumn与TemplateColumn_Gridview_Sorting_Linqdatasource_Templatefield - Fatal编程技术网

ASP.Net:排序、GridView BoundColumn与TemplateColumn

ASP.Net:排序、GridView BoundColumn与TemplateColumn,gridview,sorting,linqdatasource,templatefield,Gridview,Sorting,Linqdatasource,Templatefield,在其他条件相同的情况下,asp:GridView中的BoundField列是可排序的,而TemplateField列则不是。为什么呢 <asp:LinqDataSource ID="someDataSource" runat="server" ContextTypeName="someDataContext" TableName="someTable" OnSelecting="someSelect

在其他条件相同的情况下,asp:GridView中的BoundField列是可排序的,而TemplateField列则不是。为什么呢

            <asp:LinqDataSource ID="someDataSource" runat="server" 
                ContextTypeName="someDataContext" TableName="someTable" 
                OnSelecting="someSelectingHandler" />
            <asp:GridView ID="somGrid" runat="server" 
                AllowPaging="true" AllowSorting="true"
                EnableSortingAndPagingCallbacks="true" PageSize="15" 
                DataSourceID="someDataSource" EnableViewState="true"
                EmptyDataText="No orders matched your criteria">
                <Columns>
                                   <!-- resulting column is sortable: -->
                    <asp:BoundField HeaderText="Order #" HtmlEncode="false" 
                        DataField="order_number" SortExpression="order_number">
                    </asp:BoundField>
                                  <!-- resulting column is not sortable: -->
                    <asp:TemplateField SortExpression="order_number">
                        <HeaderTemplate>Order #</HeaderTemplate>
                        <ItemTemplate><%# DataBinder.Eval(Container.DataItem, 
                         "order_number")%></ItemTemplate>
                    </asp:TemplateField>

命令#
单击BoundField标题将导致回发,并调用我的Selecting事件处理程序。它只返回IQueryable,而本身不处理排序。
文档只是说“基础数据源必须支持排序”,以便GridView可以排序。显然,LinqDataSource支持排序,否则BoundField将不可排序。还是我遗漏了什么?

所以我问错了问题。事实证明,即使使用TemplateField列,GridView实际上也是可排序的。 TemplateField不支持BoundField标记可用的EncodeHtml属性。这意味着不可能在具有HeaderText属性的TemplateField标头中强制换行。使用HeaderTemplate是解决这一问题的方法,但仅使用静态文本,列就不再可排序


有解决方案。

+1是一个好问题。我厌倦了仅仅因为添加了TemplateField而添加排序事件。我假设框架希望TemplateField包含一个或多个控件,在这种情况下,排序将不起作用。不过TemplateField应该仍然知道绑定的数据。我想我知道了一些事情。这和校长的职位有关。如果我从Template字段中删除HeaderTemplate并仅使用HeaderText属性,它将显示为链接,并且我可以在不使用排序处理程序的情况下对TemplateColumn进行排序。