Frågan 24 juni 2003 12:34 #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ö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ö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>
R renholm Medlem sedan apr. 2001 2 266 inlägg 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?
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
R renholm Medlem sedan apr. 2001 2 266 inlägg 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.
hur kodar jag det? Jag har hållt på och testat men det funkar inte:(
R renholm Medlem sedan apr. 2001 2 266 inlägg 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;
}
}