【问题标题】:Split datalist into sections将数据列表拆分为多个部分
【发布时间】:2011-05-31 04:57:37
【问题描述】:

在我的数据列表中,当不同的年份发生时,我想创建一个分隔符,将每个 ItemTemplate 与新的一年分开。

我使用以下方法选择我的数据:

MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM code_post", dbcon);

在该字段中,date 表示它的创建年份。例如 2011、2010、2009。

当发生不同的年份时,如何为新的年份部门设置标题?

【问题讨论】:

    标签: c# .net asp.net datalist


    【解决方案1】:

    截至目前,数据处于扁平层次结构中,例如 List<DataObject>。您可以使用 Linq 或 for-loops 在Dictionary<int,List<DataObject>> 中创建它,其中字典键中的每个条目将是年份值,而值将是该年份的数据对象列表。比您的转发器内部应该有一个转发器,然后将此 Dictionary 对象绑定到外部转发器,内部转发器数据源应该是 DataItem.Value (即绑定到外部转发器数据项的当前 KeyValue 对的值部分)。

    这不是你可以直接复制/粘贴的答案,但我希望你明白了

    【讨论】:

      【解决方案2】:

      我也遇到过这种情况。

      我所做的是……

      我拿了一个中继器并从数据库中获取了DISTINCT 年。 使用HiddenField 并像这样将年份与DataList 一起保存在<ItemTemplate> 中。

      <asp:HiddenField ID="hfYear" runat="server" Value='<%#Eval("year")%>' />
      

      然后使用中继器的ItemDataBound,我首先搜索DataListHiddenField,然后通过从HiddenField 传递年份,将DataList 与另一种方法绑定。

      OnitemDataBound 使用

      if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {
          HiddenField hf = (HiddenField)e.Item.FindControl("hfYear");
          DataList dl = (DataList)e.Item.FindControl("yourDataListID");
          yourDataListBindMethod(hf.Value);
      }
      

      唯一的缺点是需要多次往返数据库(不同年份的数量=访问数据库的次数)。

      【讨论】:

        【解决方案3】:

        我解决这个问题的方法是通过一次访问数据库,并拥有诸如

        之类的代码
        private String previousYear;
        public string outputHeader(object y){
          String year = y.ToString();
           if(!previousYear.equals(year)){
              previousYear = year;
              return year;
           }
           return "";
        }
        

        在我所做的项目模板中

        <%# outputHeader(Eval("date")) %>
        

        这允许一次访问数据库,并且比以前建议的方法更有效/更灵活

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-22
          • 2020-10-12
          • 2013-08-04
          相关资源
          最近更新 更多