Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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 C#中按行号对GridView排序?_C#_Asp.net_Sorting_Gridview - Fatal编程技术网

在asp.net C#中按行号对GridView排序?

在asp.net C#中按行号对GridView排序?,c#,asp.net,sorting,gridview,C#,Asp.net,Sorting,Gridview,我在ASP.NET中有一个带有行号(Container.DataItemIndex)列的GridView(1,2,3,4,…) 我通过以下代码在GridView中添加了它: <asp:TemplateField HeaderText="#" SortExpression="#"> <ItemTemplate> <%# Container.DataItemIndex + 1 %> </ItemTemplate>

我在ASP.NET中有一个带有行号(Container.DataItemIndex)列的GridView(1,2,3,4,…)

我通过以下代码在GridView中添加了它:

<asp:TemplateField HeaderText="#" SortExpression="#">
     <ItemTemplate>
          <%# Container.DataItemIndex + 1 %>
     </ItemTemplate>
</asp:TemplateField>
我怎么做

编辑:
我是这样做的,但它将列排序为
1,11,12,13,…,2,21,22,

我想对#列
1,2,3,…,11,12,13,…


(一开始声明式排序比较容易,但学习编程方式也很好)

听起来像是按字符串排序,这样行吗

<ItemTemplate> 
    <%# Convert.ToInt32(Container.DataItemIndex + 1) %> 
</ItemTemplate>

我使用了以下方法解决了我的问题:

HTML:

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" AllowSorting="true"
        EmptyDataText="داده ای برای نمایش وجود ندارد" Width="100%" OnPageIndexChanging="GridView1_PageIndexChanging"
        OnSelectedIndexChanging="GridView1_SelectedIndexChanging" CssClass="GridViewStyle"
        OnSorting="GridView1_Sorting">
        <FooterStyle CssClass="GridViewFooterStyle" />
        <RowStyle CssClass="GridViewRowStyle" />
        <SelectedRowStyle CssClass="GridViewSelectedRowStyle" />
        <PagerStyle CssClass="GridViewPagerStyle" />
        <AlternatingRowStyle CssClass="GridViewAlternatingRowStyle" />
        <HeaderStyle CssClass="GridViewHeaderStyle" />
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:ImageButton runat="server" ID="btnDelete" CommandName="cDelete" ImageUrl="~/Pages/images/DeleteIcon.png"
                        OnCommand="OnDelete" CommandArgument='<%# Bind("GridViewDefinitionID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField SelectText="ویرایش" ShowSelectButton="True" ButtonType="Image"
                SelectImageUrl="~/Pages/images/EditIcon.gif" EditImageUrl="~/Pages/images/EditIcon.gif">
            </asp:CommandField>
            <asp:TemplateField HeaderText="TransactionKey" SortExpression="TransactionKey">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewTransactionKey" runat="server" Text='<%# Bind("GridViewTransactionKey") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewTransactionKey" runat="server" Text='<%# Bind("GridViewTransactionKey") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="TerminalID" SortExpression="TerminalID">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewTerminalID" runat="server" Text='<%# Bind("GridViewTerminalID") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewTerminalID" runat="server" Text='<%# Bind("GridViewTerminalID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="MerchantID" SortExpression="MerchantID">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewMerchantID" runat="server" Text='<%# Bind("GridViewMerchantID") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewMerchantID" runat="server" Text='<%# Bind("GridViewMerchantID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="شماره حساب" SortExpression="شماره حساب">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewBankAccount" runat="server" Text='<%# Bind("GridViewBankAccount") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewBankAccount" runat="server" Text='<%# Bind("GridViewBankAccount") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="شعبه" SortExpression="شعبه">
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewBankBranch" runat="server" Text='<%# Bind("GridViewBankBranch") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="نام بانک" SortExpression="نام بانک">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewBankName" runat="server" Text='<%# Bind("GridViewBankName") %>'
                        Style="direction: rtl;"></asp:TextBox>
                    <asp:HiddenField ID="HiddenFieldID" runat="server" Value='<%# Bind("GridViewDefinitionID") %>' />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewBankName" runat="server" Text='<%# Bind("GridViewBankName") %>'></asp:Label>
                    <asp:HiddenField ID="HiddenFieldID" runat="server" Value='<%# Bind("GridViewDefinitionID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="#" SortExpression="#">
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewRowNumber" runat="server" Text='<%# Bind("GridViewRowNumber") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

C#:

DataView SortGridView()
{
BankTransactionDataSet1数据集=新的BankTransactionDataSet1();
BankTransactionsDataClassesDataContext dbc=新的BankTransactionsDataClassesDataContext();
var定义=dbc.Definitions;
if(Definitions.Count()c.BankID==Definition.BankID).First().BankName;
字符串bankBranch=dbc.Banks.Where(c=>c.BankID==Definition.BankID).First().bankBranch;
dataSet.DataTableBanks.Rows.Add(bankName,Definition.BankAccount,
Definition.MerchantID,Definition.TerminalID,
Definition.TransactionKey,Definition.DefinitionID,
i、 ToString(),银行分行);
}
字符串SortExpression=(ViewState[“SortExpression”]作为字符串)==null?“GridViewBankName”:ViewState[“SortExpression”]作为字符串;
字符串lastDirection=(ViewState[“SortDirection”]作为字符串)==null?“ASC”:ViewState[“SortDirection”]作为字符串;
DataView newBankDataTable=新数据视图();
开关(SortExpression)
{
案例“GridViewTransactionKey”:
如果(lastDirection==“ASC”)
newBankDataTable=dataSet.DataTableBanks.OrderBy(q=>q.GridViewTransactionKey).AsDataView();
其他的
newBankDataTable=dataSet.DataTableBanks.OrderByDescending(q=>q.GridViewTransactionKey).AsDataView();
打破
案例“GridViewTerminalID”:
如果(lastDirection==“ASC”)
newBankDataTable=dataSet.DataTableBanks.OrderBy(q=>q.GridViewTerminalID).AsDataView();
其他的
newBankDataTable=dataSet.DataTableBanks.OrderByDescending(q=>q.GridViewTerminalID).AsDataView();
打破
案例“GridViewMerchantID”:
如果(lastDirection==“ASC”)
newBankDataTable=dataSet.DataTableBanks.OrderBy(q=>q.GridViewMerchantID).AsDataView();
其他的
newBankDataTable=dataSet.DataTableBanks.OrderByDescending(q=>q.GridViewMerchantID).AsDataView();
打破
案例“GridViewBankAccount”:
如果(lastDirection==“ASC”)
newBankDataTable=dataSet.DataTableBanks.OrderBy(q=>q.GridViewBankAccount).AsDataView();
其他的
newBankDataTable=dataSet.DataTableBanks.OrderByDescending(q=>q.GridViewBankAccount).AsDataView();
打破
案例“GridViewBankName”:
如果(lastDirection==“ASC”)
newBankDataTable=dataSet.DataTableBanks.OrderBy(q=>q.GridViewBankName).AsDataView();
其他的
newBankDataTable=dataSet.DataTableBanks.OrderByDescending(q=>q.GridViewBankName).AsDataView();
打破
案例“GridViewRowNumber”:
如果(lastDirection==“ASC”)
newBankDataTable=dataSet.DataTableBanks.OrderBy(q=>int.Parse(q.GridViewRowNumber)).AsDataView();
其他的
newBankDataTable=dataSet.DataTableBanks.OrderByDescending(q=>int.Parse(q.GridViewRowNumber)).AsDataView();
打破
违约:
dataSet.DataTableBanks.DefaultView.Sort=SortExpression+“”+lastDirection;
打破
}
返回newBankDataTable;
}
受保护的无效GridView1_排序(对象发送器,GridViewSortEventArgs e)
{
尝试
{
开关(如SortExpression)
{
案例“TransactionKey”:
ViewState[“SortExpression”]=“GridViewTransactionKey”;
打破
“TerminalID”案:
ViewState[“SortExpression”]=“GridViewTerminalID”;
打破
案例“MerchantID”:
ViewState[“SortExpression”]=“GridViewMerchantID”;
打破
“شماهحساب”案:
ViewState[“SortExpression”]=“GridViewBankAccount”;
打破
“ناباک”案:
ViewState[“SortExpression”]=“GridViewBankName”;
打破
案例“#”:
ViewState[“SortExpression”]=“GridViewRowNumber”;
打破
违约:
打破
}
字符串lastDirection=ViewState[“SortDirection”]作为字符串;
str
 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" AllowSorting="true"
        EmptyDataText="داده ای برای نمایش وجود ندارد" Width="100%" OnPageIndexChanging="GridView1_PageIndexChanging"
        OnSelectedIndexChanging="GridView1_SelectedIndexChanging" CssClass="GridViewStyle"
        OnSorting="GridView1_Sorting">
        <FooterStyle CssClass="GridViewFooterStyle" />
        <RowStyle CssClass="GridViewRowStyle" />
        <SelectedRowStyle CssClass="GridViewSelectedRowStyle" />
        <PagerStyle CssClass="GridViewPagerStyle" />
        <AlternatingRowStyle CssClass="GridViewAlternatingRowStyle" />
        <HeaderStyle CssClass="GridViewHeaderStyle" />
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:ImageButton runat="server" ID="btnDelete" CommandName="cDelete" ImageUrl="~/Pages/images/DeleteIcon.png"
                        OnCommand="OnDelete" CommandArgument='<%# Bind("GridViewDefinitionID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField SelectText="ویرایش" ShowSelectButton="True" ButtonType="Image"
                SelectImageUrl="~/Pages/images/EditIcon.gif" EditImageUrl="~/Pages/images/EditIcon.gif">
            </asp:CommandField>
            <asp:TemplateField HeaderText="TransactionKey" SortExpression="TransactionKey">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewTransactionKey" runat="server" Text='<%# Bind("GridViewTransactionKey") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewTransactionKey" runat="server" Text='<%# Bind("GridViewTransactionKey") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="TerminalID" SortExpression="TerminalID">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewTerminalID" runat="server" Text='<%# Bind("GridViewTerminalID") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewTerminalID" runat="server" Text='<%# Bind("GridViewTerminalID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="MerchantID" SortExpression="MerchantID">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewMerchantID" runat="server" Text='<%# Bind("GridViewMerchantID") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewMerchantID" runat="server" Text='<%# Bind("GridViewMerchantID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="شماره حساب" SortExpression="شماره حساب">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewBankAccount" runat="server" Text='<%# Bind("GridViewBankAccount") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewBankAccount" runat="server" Text='<%# Bind("GridViewBankAccount") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="شعبه" SortExpression="شعبه">
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewBankBranch" runat="server" Text='<%# Bind("GridViewBankBranch") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="نام بانک" SortExpression="نام بانک">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBoxGridViewBankName" runat="server" Text='<%# Bind("GridViewBankName") %>'
                        Style="direction: rtl;"></asp:TextBox>
                    <asp:HiddenField ID="HiddenFieldID" runat="server" Value='<%# Bind("GridViewDefinitionID") %>' />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewBankName" runat="server" Text='<%# Bind("GridViewBankName") %>'></asp:Label>
                    <asp:HiddenField ID="HiddenFieldID" runat="server" Value='<%# Bind("GridViewDefinitionID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="#" SortExpression="#">
                <ItemTemplate>
                    <asp:Label ID="LabelGridViewRowNumber" runat="server" Text='<%# Bind("GridViewRowNumber") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
DataView SortGridView()
{
    BankTransactionsDataSet1 dataSet = new BankTransactionsDataSet1();
    BankTransactionsDataClassesDataContext dbc = new BankTransactionsDataClassesDataContext();
    var Definitions = dbc.Definitions;

    if (Definitions.Count() <= 0) return null;
    int i = 0;
    foreach (var Definition in Definitions)
    {
        i++;
        string bankName = dbc.Banks.Where(c => c.BankID == Definition.BankID).First().BankName;
        string bankBranch = dbc.Banks.Where(c => c.BankID == Definition.BankID).First().BankBranch;
        dataSet.DataTableBanks.Rows.Add(bankName, Definition.BankAccount,
            Definition.MerchantID, Definition.TerminalID,
            Definition.TransactionKey, Definition.DefinitionID,
            i.ToString(), bankBranch);
    }

    string SortExpression = (ViewState["SortExpression"] as string) == null ? "GridViewBankName" : ViewState["SortExpression"] as string;
    string lastDirection = (ViewState["SortDirection"] as string) == null ? "ASC" : ViewState["SortDirection"] as string;

    DataView newBankDataTable = new DataView();
    switch (SortExpression)
    {
        case "GridViewTransactionKey":
            if (lastDirection == "ASC")
                newBankDataTable = dataSet.DataTableBanks.OrderBy(q => q.GridViewTransactionKey).AsDataView();
            else
                newBankDataTable = dataSet.DataTableBanks.OrderByDescending(q => q.GridViewTransactionKey).AsDataView();
            break;

        case "GridViewTerminalID":
            if (lastDirection == "ASC")
                newBankDataTable = dataSet.DataTableBanks.OrderBy(q => q.GridViewTerminalID).AsDataView();
            else
                newBankDataTable = dataSet.DataTableBanks.OrderByDescending(q => q.GridViewTerminalID).AsDataView();
            break;

        case "GridViewMerchantID":
            if (lastDirection == "ASC")
                newBankDataTable = dataSet.DataTableBanks.OrderBy(q => q.GridViewMerchantID).AsDataView();
            else
                newBankDataTable = dataSet.DataTableBanks.OrderByDescending(q => q.GridViewMerchantID).AsDataView();
            break;

        case "GridViewBankAccount":
            if (lastDirection == "ASC")
                newBankDataTable = dataSet.DataTableBanks.OrderBy(q => q.GridViewBankAccount).AsDataView();
            else
                newBankDataTable = dataSet.DataTableBanks.OrderByDescending(q => q.GridViewBankAccount).AsDataView();
            break;

        case "GridViewBankName":
            if (lastDirection == "ASC")
                newBankDataTable = dataSet.DataTableBanks.OrderBy(q => q.GridViewBankName).AsDataView();
            else
                newBankDataTable = dataSet.DataTableBanks.OrderByDescending(q => q.GridViewBankName).AsDataView();
            break;

        case "GridViewRowNumber":
            if (lastDirection == "ASC")
                newBankDataTable = dataSet.DataTableBanks.OrderBy(q => int.Parse(q.GridViewRowNumber)).AsDataView();
            else
                newBankDataTable = dataSet.DataTableBanks.OrderByDescending(q => int.Parse(q.GridViewRowNumber)).AsDataView();

            break;

        default:
            dataSet.DataTableBanks.DefaultView.Sort = SortExpression + " " + lastDirection;
            break;
    }

    return newBankDataTable;
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    try
    {
        switch (e.SortExpression)
        {
            case "TransactionKey":
                ViewState["SortExpression"] = "GridViewTransactionKey";
                break;

            case "TerminalID":
                ViewState["SortExpression"] = "GridViewTerminalID";
                break;

            case "MerchantID":
                ViewState["SortExpression"] = "GridViewMerchantID";
                break;

            case "شماره حساب":
                ViewState["SortExpression"] = "GridViewBankAccount";
                break;

            case "نام بانک":
                ViewState["SortExpression"] = "GridViewBankName";
                break;

            case "#":
                ViewState["SortExpression"] = "GridViewRowNumber";
                break;

            default:
                break;
        }
        string lastDirection = ViewState["SortDirection"] as string;
        string sortDirection = "DESC";
        if ((lastDirection != null) && (lastDirection == "DESC")) sortDirection = "ASC";
        ViewState["SortDirection"] = sortDirection;

        GridView1.DataSource = SortGridView();
        GridView1.DataBind();
    }
    catch (Exception ex)
    {
        LabelResult.Text = ex.Message;
    }
}