webForumDet fria alternativet

koppla sorteringsfunktion till en länk?

.NET

6 svar · 172 visningar · startad av wwwstekaren

Medlem sedan apr. 2003234 inlägg
Frågan#1

Koden nedan visar en datagrid där jag har olika fält där det visas olika saker, överst så har jag en dropdown till vänster om den står det en text "Ansvarig" jag vill att det ska gå att sortera när man klickar på den texten precis som de andra kolla ex <asp:TemplateColumn HeaderText="Efternamn" SortExpression="LastName"> där funkar det att sortera.

<asp:datagrid id="XmlDataGrid" runat="server" AutoGenerateColumns="False" AllowSorting="True" OnSortCommand="XmlDataGrid_SortCommand" width="100%" OnDeleteCommand="DEDR_Delete" OnUpdateCommand="DEDR_Update" OnCancelCommand="DEDR_Cancel" OnEditCommand="DEDR_Edit">
				<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
				<ItemStyle BackColor="White"></ItemStyle>
				<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="DodgerBlue"></HeaderStyle>
				<Columns>
					<asp:TemplateColumn>
						<HeaderTemplate>
							Ansvarig
							<asp:DropDownList ID="dropdownlistRe" Runat="server" AutoPostBack="True" OnSelectedIndexChanged="Contact_view"></asp:DropDownList>
						</HeaderTemplate>
						<ItemTemplate>
							<div class="name"><%# DataBinder.Eval(Container.DataItem, "Responsible") %></div>
						</ItemTemplate>
						<EditItemTemplate>
							<asp:TextBox id="txtResponsible" Text='<%# DataBinder.Eval(Container.DataItem, "Responsible") %>' size="25" runat="server"/>
						</EditItemTemplate>
					</asp:TemplateColumn>
					<asp:TemplateColumn HeaderText="F&#246;rnamn" SortExpression="Name">
						<ItemTemplate>
							<div class="name"><%# DataBinder.Eval(Container.DataItem, "Name") %></a></div>
						</ItemTemplate>
						<EditItemTemplate>
							<asp:TextBox id="txtName" Text='<%# DataBinder.Eval(Container.DataItem,"Name") %>' size="25" runat="server"/>
						</EditItemTemplate>
					</asp:TemplateColumn>
					<asp:TemplateColumn HeaderText="Efternamn" SortExpression="LastName">
						<ItemTemplate>
							<div class="name"><%# DataBinder.Eval(Container.DataItem, "LastName") %></div>
						</ItemTemplate>
						<EditItemTemplate>
							<asp:TextBox id="txtLastName" Text='<%# DataBinder.Eval(Container.DataItem,"LastName") %>' size="25" runat="server"/>
						</EditItemTemplate>
					</asp:TemplateColumn>
					<asp:TemplateColumn HeaderText="E-post" SortExpression="Email">
						<ItemTemplate>
							<div class="name"><%# DataBinder.Eval(Container.DataItem, "Email") %></div>
						</ItemTemplate>
						<EditItemTemplate>
							<asp:TextBox id="txtEmailAddress" Text='<%# DataBinder.Eval(Container.DataItem, "Email") %>' size="25" runat="server"/>
						</EditItemTemplate>
					</asp:TemplateColumn>
					<asp:TemplateColumn HeaderText="F&#246;retag" SortExpression="Company">
						<ItemTemplate>
							<div class="name"><%# DataBinder.Eval(Container.DataItem, "Company") %></div>
						</ItemTemplate>
						<EditItemTemplate>
							<asp:TextBox id="txtCompany" Text='<%# DataBinder.Eval(Container.DataItem, "Company") %>' size="25" runat="server"/>
						</EditItemTemplate>
					</asp:TemplateColumn>
					<asp:TemplateColumn HeaderText="Typ av O2-kontakt" SortExpression="Contact">
						<ItemTemplate>
							<div class="name"><%# DataBinder.Eval(Container.DataItem, "Contact") %></div>
						</ItemTemplate>
						<EditItemTemplate>
							<asp:Dropdownlist id="txtContact" Text='<%# DataBinder.Eval(Container.DataItem, "Contact") %>' width="100%" runat="server">
								<asp:ListItem Value="contact1">Nätverk</asp:ListItem>
								<asp:ListItem Value="contact2">Kund</asp:ListItem>
								<asp:ListItem Value="contact3">Leverantör</asp:ListItem>
								<asp:ListItem Value="contact4">Partner</asp:ListItem>
								<asp:ListItem Value="contact5">Prospekt</asp:ListItem>
								<asp:ListItem Value="contact6">Fd O2are</asp:ListItem>
							</asp:Dropdownlist>
						</EditItemTemplate>
					</asp:TemplateColumn>
					<asp:TemplateColumn>
						<ItemTemplate>
							<div class="button">
								<asp:LinkButton CommandName="Edit" Text="Edit" runat="server" ID="Linkbutton2">
									<img src="edit.gif" align="left" border="0" alt="Edit"></asp:LinkButton></div>
							<div class="button">
								<asp:LinkButton ID="lbDelete" CommandName="Delete" OnPreRender="cmdDelete_onPreRender" Text="Delete" runat="server">
									<img src="trashcan.gif" align="left" border="0" alt="Delete"></asp:LinkButton></div>
						</ItemTemplate>
						<EditItemTemplate>
							<div class="button">
								<asp:LinkButton CommandName="Cancel" Text="Cancel" runat="server" ID="Linkbutton4">
									<img src="cancel.gif" border="0" alt="Cancel" align="left"></asp:LinkButton></div>
							<div class="button">
								<asp:LinkButton CommandName="Update" Text="Add/Update" runat="server" ID="Linkbutton5">
									<img src="add.gif" alt="Add/Update" border="0" align="left">
								</asp:LinkButton></div>
						</EditItemTemplate>
					</asp:TemplateColumn>
				</Columns>
			</asp:datagrid>
Medlem sedan apr. 20012 266 inlägg
#2

Vet inte hur du binder datan till din datagrid men du kan använda: DataView.Sort = dindropdown.SelectedItem.Value;
I fall du binder med en DataTable kan du göra så här:
DataTable.DefaultView.Sort = dindropdown.SelectedItem.Value;

Förstod jag frågan rätt?

Medlem sedan apr. 2003234 inlägg
#3

du ser hur jag gör när jag sorterar de andra texterna?

<asp:TemplateColumn HeaderText="Förnamn" SortExpression="Name">

Men det funkar inte på min första kod kolla ovan

Medlem sedan apr. 20012 266 inlägg
#4

Ok, såg inte att den låg innanför i Header men borde väl inte vara några problem du skapar en evenhandler som hanterar det ändrade värdet i dropdownlistan och därefter sorterar om datagriden med den kod jag tidigare sagt.

Medlem sedan apr. 2003234 inlägg
#5

hur kodar jag det? Jag har hållt på och testat men det funkar inte:(

Medlem sedan apr. 20012 266 inlägg
#6

Enklast är om du skapar en knapp brevid din dropdown och sätta CommandName="SortByRes". Sedan använder du Eventet DataGrid_ItemCommand och kollar om commandot är ett SortByRes.

Så här ungefär:

private void DataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch(e.CommandName)
	{
	case "SortByRes":
		// sorterings kod
		break;
	}
}
Medlem sedan apr. 2003234 inlägg
#7

tackar:)

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)