<form runat="server">
Select only Titles containing the text:
<ASP:TextBox id="txtFindText" runat="server" />
<ASP:Button id="cmdFind" Text="Find" runat="server" /><p />
<ASP:DataGrid id="MyDataGrid" runat="server"
EnableViewState="False"
CellPadding="5"
GridLines="None"
HeaderStyle-BackColor="silver"
HeaderStyle-HorizontalAlign="center"
FooterStyle-BackColor="silver"
ShowFooter="True"
AllowSorting="True" //允许排序
OnSortCommand="SortRows" //声明排序处理函数
/>
</form>
以下是脚本:
<script language="C#" runat="server">
string gstrSortOrder;// to hold the sort order
string gstrFindText;// to hold the filter expression
void Page_Load(Object sender, EventArgs e)
{
if (Page.IsPostBack)
{
// set the value to be used for the RowFilter on the DataView
gstrFindText = "Title LIKE '*" + txtFindText.Text + "*'";
}
else
{
// set the default values for the sort string and filter text box
gstrSortOrder = "ISBN";
txtFindText.Text = "ASP";
}
// recreate the data set and bind to the DataGrid control
BindDataGrid();
}
void SortRows(Object objSender, DataGridSortCommandEventArgs objArgs )
{
// runs when the column headings in the DataGrid are clicked
// get the sort expression (name of the column heading that was clicked)
//得到排序索引值
gstrSortOrder = objArgs.SortExpression.ToString();
// recreate the data set and bind to the DataGrid control
BindDataGrid();
}
void BindDataGrid()
{
// get connection string from ..\global\connect-strings.ascx user control
string strConnect = ctlConnectStrings.OLEDBConnectionString;
// create a SQL statement to select some rows from the database
string strSelect = "SELECT * FROM BookList";
// create a variable to hold an instance of a DataView object
DataView objDataView;
// get DataView from get-dataview-control.ascx user control
objDataView = ctlDataView.GetDataView(strConnect, strSelect);
if (objDataView == null)
return;
// sort the rows in the DataView into the specified order
//排序
objDataView.Sort = gstrSortOrder;
// select the rows in the DataView that match the filter
//设置筛选
objDataView.RowFilter = gstrFindText;
// set the DataSource property of the DataList
MyDataGrid.DataSource = objDataView;
// and bind the control to the data
MyDataGrid.DataBind();
}
</script>
注意点:
DataGridSortCommandEventArgs objArgs
gstrSortOrder = objArgs.SortExpression.ToString();
objDataView.Sort = gstrSortOrder;
objDataView.RowFilter = gstrFindText;