【发布时间】:2023-03-10 03:18:02
【问题描述】:
我有以下实现排序的代码(asp.net 和代码隐藏):
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PullData("", "");
ViewState["sortOrder"] = "";
}
}
public void PullData(string sortExp, string sortDir)
{
DataTable taskData = new DataTable();
string connString = @"user id = dsfsdfds;" + "password= sadasdada; server= mg; database= ob;" /*+ "Trusted_Connection=yes;"*/ + "connection timeout=30";
string query = @"SELECT 'http://mg/appnet/workview/objectPop.aspx?objectid=' + CAST(CT.OBJECTID AS VARCHAR) + '&classid=1224' 'Task Detail'
,UG.USERGROUPNAME 'Services'
,CT.ATTR2812 'Status'
,CT.ATTR2752 'Due Date'
,CT.ATTR2739 'Task Name'
FROM dbo.RMOBJECTINSTANCE1224 CT
WHERE CT.ACTIVESTATUS = 0";
using (SqlConnection conn = new SqlConnection(connString))
{
try
{
SqlCommand cmd = new SqlCommand(query, conn);
// create data adapter
SqlDataAdapter da = new SqlDataAdapter(query, conn);
// this will query your database and return the result to your datatable
DataSet myDataSet = new DataSet();
da.Fill(myDataSet);
DataView myDataView = new DataView();
myDataView = myDataSet.Tables[0].DefaultView;
if (sortExp != string.Empty)
{
myDataView.Sort = string.Format("{0} {1}", sortExp, sortDir);
}
yourTasksGV.DataSource = myDataView;
yourTasksGV.DataBind();
conn.Close();
}
catch (Exception ex)
{
string error = ex.Message;
}
}
}
protected void yourTasksGV_Sorting(object server, GridViewSortEventArgs e)
{
PullData(e.SortExpression, sortOrder);
}
public string sortOrder
{
get
{
if (ViewState["sortOrder"].ToString() == "Desc")
{
ViewState["sortOrder"] = "Asc";
}
else
{
ViewState["sortOrder"] = "Desc";
}
return ViewState["sortOrder"].ToString();
}
set
{
ViewState["sortOrder"] = value;
}
}
我的GridView:
<asp:GridView AlternatingRowStyle-BackColor="#E2E2E2" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" AllowSorting="true" ID="yourTasksGV" runat="server" ClientIDMode="Static" EmptyDataText="There is no data to display" OnRowDataBound="yourTasksGV_RowDataBound" OnRowCreated="yourTasksGV_RowCreated">
<Columns>
<asp:HyperLinkField Target="_blank" DataNavigateUrlFields="Task Detail" DataTextField="Task Name" DataNavigateUrlFormatString="" HeaderText="Task Details" SortExpression="Task Detail" ItemStyle-Width="35%" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Services" HeaderText="Services" SortExpression="Services" ItemStyle-Width="25%" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" ItemStyle-Width="15%" ItemStyle-CssClass="taskTableColumn" />
<asp:BoundField DataField="Due Date" HeaderText="Due Date" SortExpression="Due Date" ItemStyle-Width="15%" ItemStyle-CssClass="taskTableColumn" />
</Columns>
</asp:GridView>
对于第一列,我使用 Task Name 并显示为 SQL 查询中 Task Detail 列中链接的显示文本(DataTextField 是任务名称而不是任务详细信息)。
如何修改我的代码以执行以下操作:
- 当我单击
Task Details选项卡时,它应该按Task Name排序,显示为Task Detail链接的显示? - 在我排序表格的标题文本旁边显示图像? (up.png 和 down.png)?
- 在页面加载时,按#1 ASC 排序并分别显示图像?
我的GridView 正在显示给用户(注意第一列链接在href 中的使用方式,显示文本是Task Name):
【问题讨论】:
标签: c# asp.net sorting gridview