我有一个GridView,希望能够在单击任何列标题时对其进行排序。有一个DataTable是在运行时构建的,并分配给GridView以填充数据。以下是DataTable和GridView:
DataTable dtMedication = new DataTable();
dtClientMedications.Columns.Add("Id");
dtClientMedications.Columns.Add("BrandName");
dtClientMedications.Columns.Add("GenericName");
dtClientMedications.Columns.Add("Dosage");
dtClientMedications.Columns.Add("Physician");
dtClientMedications.Columns.Add("DatePrescribed");
dtClientMedications.Columns.Add("Status");
dtClientMedications.Columns.Add("ClientMedicationDataId");
<asp:GridView ID="gdvMainList" runat="server" AutoGenerateColumns="False"
SkinID="PagedGridView" onrowcommand="gdvMainList_RowCommand"
DataKeyNames="Id" onsorting="gdvMainList_Sorting">
<PagerStyle CssClass="gridpager" HorizontalAlign="Right" />
<Columns>
<ucc:CommandFieldControl HeaderText="Actions" ShowDeleteButton="true" ButtonType="Image"
DeleteImageUrl="~/App_Themes/Default/images/delete.png" ShowEditButton="true"
EditImageUrl="~/App_Themes/Default/images/edit.png" DeleteConfirmationText="Are you sure you want to delete?">
<ItemStyle HorizontalAlign="Center" Width="60px" />
</ucc:CommandFieldControl>
<asp:BoundField DataField="BrandName" HeaderText="Brand Name" />
<asp:BoundField DataField="GenericName" HeaderText="Generic Name" />
<asp:BoundField DataField="Dosage" HeaderText="Dosage" />
<asp:BoundField DataField="Physician" HeaderText="Physician" />
<asp:BoundField DataField="DatePrescribed" HeaderText="Date Prescribed" />
<asp:BoundField DataField="Status" HeaderText="Status" />
<asp:TemplateField HeaderText="">
<ItemStyle CssClass="HiddenCol" Width="0px" />
<HeaderStyle CssClass="HiddenCol" />
<ItemTemplate>
<asp:HiddenField ID="hdfClientMedicationDataId" runat="server" Value='<%#Bind("ClientMedicationDataId") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<div class="divEmptyGrid">
--- No Medication Exists ---
</div>
</EmptyDataTemplate>
</asp:GridView>