当前位置:  开发笔记 > 编程语言 > 正文

使用ObjectDataSource对GridView进行排序不是排序

如何解决《使用ObjectDataSource对GridView进行排序不是排序》经验,为你挑选了1个好方法。

我有如下的网格视图:

 
                  
                  
                  
                  
                  
               
 

我有一个带有gridview和objectdatasource控件的页面.AllowPaging和AllowSorting已启用.这是我使用的获取数据并将objectdatasource绑定到网格的方法:

        protected void BindBrokerageDetails()
        {
            HomePage master = (HomePage)Page.Master;

            BrokerageAccount brokerageAccount = new BrokerageAccount();
            brokerageAccount.UserID = new Guid(Membership.GetUser().ProviderUserKey.ToString()); 

            ddlBrokerageDetails.DataSource = brokerageAccount.GetAll();
            ddlBrokerageDetails.DataTextField = "Account Name";
            ddlBrokerageDetails.DataValueField = "Account Name";
            ddlBrokerageDetails.DataBind();
           if (ddlBrokerageDetails.Items.Count > 0)
           {
               BrokerageTransactions brokerageaccountdetails = new          
                                           BrokerageTransactions();
               DataSet ds = BrokerageAccount.GetBrkID2(
                                    new Guid(Membership
                                              .GetUser()
                                              .ProviderUserKey
                                              .ToString()),
                                    ddlBrokerageDetails
                                              .SelectedItem
                                              .Text
                                              .ToString());
               foreach (DataRow dr in ds.Tables[0].Rows)
               {
                   brokerageaccountdetails.BrokerageId = new Guid(dr["BrkrgId"].ToString());
               }

               ddlBrokerageDetails.SelectedItem.Value = brokerageaccountdetails.BrokerageId.ToString();
               grvBrokerage.DataSource = ObjectDataSource1;
               grvBrokerage.DataBind();
           }           
      }

我有一个排序事件,但是当我检查grvBrokerage.DataSource时,它是null.我很好奇为什么?这是代码吗?

  protected void grvBrokerage_Sorting(object sender, GridViewSortEventArgs e)
       {                
         DataTable dt = grvBrokerage.DataSource as DataTable;

            if (dt != null)
            {                    
              DataView dv = new DataView(dt);
              dv.Sort = e.SortExpression + " " + e.SortDirection;    
              grvBrokerage.DataSource = dv;
              grvBrokerage.DataBind();
           }
       }

这是ObjectDataSource声明:


                      
                          
                      

谢谢,X



1> Eddie Deyo..:

当您使用ObjectDataSource(或任何其他*DataSource)时,您为GridView设置DataSourceID,而不是DataSource.DataSourceID应该是ObjectDataSource的ID.如果您提供ObjectDataSource的声明,我可能会提供更多帮助.

至于为什么你的DataSource在你的Sorting事件中为空,这是因为你设置了DataSource,将页面发送到客户端,点击了列标题,发布回服务器,现在有了一个从未有过的全新的GridView实例它的DataSource属性集.旧的GridView实例(以及绑定的数据表)已被丢弃.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有