GridView使用DataSet中的DataSource进行排序

时间:2014-08-05 23:24:34

标签: c# asp.net sorting datasource

所以我厌倦了使用GridView的Bound Fields。我想自定义网格,以便我可以: 答:保持打开的文本框可编辑而无需将行切换到编辑模式。 B:启用逐行更新。例如,我更改行上的值,并在同一行上单击Update链接以将我的更改提交回数据库。这部分是为了允许用户使用Update All尝试他们的保存/提交,然后当GridView中出现错误时,他们可以修复错误,提交错误并转移到下一个错误。他们没有失去任何工作或进步。我通过跟踪原始值的隐藏单元管理取消功能和验证。 C:支持"全部更新"链接。所以我可以更改多行,然后单击“全部更新”。

一般"减少点击次数"事情,我会承认,只是看看我能做些什么......

然后我点击排序和分页......尖叫停止。我到目前为止找到的最佳信息来自以下链接。

HOW TO: Using sorting...

不幸的是,它对我不起作用,因为我在PostBack上的GridView数据源中不断返回NULL。

这是我的GridView的样子。

<asp:GridView ID="gridview1" runat="server" ClientIDMode="Static" AutoGenerateColumns="false" 
    AutoGenerateDeleteButton="false" AutoGenerateEditButton="false" 
    CellPadding="4" DataKeyNames="RecordID" PageSize="15" width="500px" 
    OnRowCommand="gridview1_RowCommand">
    <Columns>
        <%--RecordID column must remain the first column for accurate functionality.--%>
        <asp:BoundField DataField="RecordID" HeaderText="Record ID" ReadOnly="FALSE" Visible="false" />
        <asp:TemplateField HeaderStyle-CssClass="GridViewColHdrCentered" ItemStyle-CssClass="GridViewTextBoxCentering">
            <HeaderTemplate>
                <asp:LinkButton ID="btnUpdateAll" runat="server" Text="Update All" OnClick="btnUpdateAll_Click"></asp:LinkButton>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:LinkButton ID="btnUpdate" runat="server" Text="Update" CssClass="GridViewTextBoxCentering" CommandName="UpdateCUST" CommandArgument='<%# Bind("RecordID") %>'></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderStyle-CssClass="GridViewColHdrCentered" ItemStyle-CssClass="GridViewTextBoxCentering">
            <HeaderTemplate>
                <asp:Label ID="lblCancel" runat="server" Text=""></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:LinkButton ID="btnCancel" runat="server" Text="Cancel" CssClass="GridViewTextBoxCentering" CommandName="CancelCUST" CommandArgument='<%# Bind("RecordID") %>'></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderStyle-CssClass="GridViewColHdrCentered">
            <HeaderTemplate>
                <asp:Label ID="lblField1" runat="server" Text="Business Area"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:TextBox ID="txtbxField1" ClientIDMode="Static" runat="server" Width="98%" CssClass="GridViewTextBoxCenteringNoBorder"  Text='<%# Bind("Field1") %>' onchange="javascript: RowTextChanged( this )" ></asp:TextBox>
                <asp:Label ID="txtbxValidationField1" ClientIDMode="Static" runat="server" Text='<%# Bind("Field1") %>' CssClass="GridViewHiddenCell"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderStyle-CssClass="GridViewColHdrCentered">
            <HeaderTemplate>
                <asp:Label ID="lblField2" runat="server" Text="Field2"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:TextBox ID="txtbxField2" ClientIDMode="Static" runat="server" Width="98%" CssClass="GridViewTextBoxCenteringNoBorder"  Text='<%# Bind("Field2") %>' onchange="javascript: RowTextChanged( this )" > </asp:TextBox>
                <asp:Label ID="txtbxValidationField2" ClientIDMode="Static" runat="server" Text='<%# Bind("Field2") %>' CssClass="GridViewHiddenCell"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderStyle-CssClass="GridViewColHdrCentered">
            <HeaderTemplate>
                <asp:Label ID="lblValidation" runat="server" Text="Validation"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblValidationOut" ClientIDMode="Static" runat="server" CssClass="GridViewTextBoxCentering"> </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderStyle-CssClass="GridViewColHdrCentered" ItemStyle-CssClass="GridViewTextBoxCentering">
            <HeaderTemplate>
                <asp:Label ID="lblDelete" runat="server" Text=""></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:LinkButton ID="btnDelete" runat="server" Text="Delete" CssClass="GridViewTextBoxCentering" CommandName="DeleteCUST" CommandArgument='<%# Bind("RecordID") %>'></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我的绑定是一个简单的过程

gridview1.DataSource = MyDataSet;
gridview1.DataBind();

但由于我没有使用<asp:SQLDataSource>之类的东西,我似乎无法让Sorting正常工作。我检查了GridView.Rows,奇妙的是GridViewRowCollection似乎没有排序功能。

编辑:我忘了提及我在做什么。 Visual Studio 2013 ASP.Net .Net 4.0

在有人建议之前,通过重新查询数据进行排序会打败我正在寻找的行为。具体要求B,能够在网格上进行现场更新。

0 个答案:

没有答案
相关问题