我的DataGrid已经能够正反排序,但是不能够在列中显示相应的排序箭头,我的代码如下,大家给我看看?string HeadText;
int i
foreach(DataGridColumn column in DataGrid1.Columns)
{
    HeadText = column.HeaderText;
    i = HeadText.IndexOf("▼",0,HeadText.Length);
    if(i==0)
    {
column.HeaderText = column.HeaderText + " ▼";
    }
    else
    {
i = HeadText.IndexOf("▲",0,HeadText.Length);
if(i==0)
{
             column.HeaderText = column.HeaderText + " ▲";
}
else
{
    column.HeaderText = column.HeaderText + " ▼";
}
     }
}程序执行了没有效果

解决方案 »

  1.   

    回复:realljx(勿忘国耻 抵制日货&女人是商品)
    private  void  DataGrid1_SortCommand(object  source,  System.Web.UI.WebControls.DataGridSortCommandEventArgs  e)
      

  2.   

    在ItemDataBound中写SortCommand过后你一重新绑定数据
    HeaderText 又回去了 :)
      

  3.   

    column.HeaderText = column.HeaderText + " ▼";
    这句话好象根本就不能改变列标题的名称啊
      

  4.   

    //可以在ItemCreated事件里对排序列的Head进行定制,比如,若e.Item.ItemType=ListItemType.Header,可以在Head后面添加表示排序方向的箭头
    private void UserDataGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType == ListItemType.Header)
    {
        string strSortBy = "";
                    string strSortAscending = "";
        string strOrder = "";
    //
    for(int i=1;i<6;i++)
    {
    strSortBy  = (string) ViewState["SortExpression"];
    strSortAscending  = (string) ViewState["orderby"];
    strOrder = ("asc" == strSortAscending ? "5" : "6");
    Label Lbl_Sorted  = new Label();
    Lbl_Sorted.Font.Name = "webdings";
    Lbl_Sorted.Font.Size = FontUnit.XSmall;
    Lbl_Sorted.Text = " " + strOrder;
    e.Item.Cells[i].Controls.Add(Lbl_Sorted);
    }
    }
    }
      

  5.   

    for(int i=1;i<6;i++)
    可以换成
    for(int i=1;i<e.Item.Cells.Count;i++)其他的不变