在asp.net C#中按行号对GridView排序?
我在ASP.NET中有一个带有行号(Container.DataItemIndex)列的GridView(1,2,3,4,…) 我通过以下代码在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: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;
}
}