none
Grid View 分组时,为什么不能按需填充数据项目个数? RRS feed

  • 问题

  •   问题:

             用Grid View 分组,

               数据源:

              <CollectionViewSource  x:Name="MyTransport" IsSourceGrouped="True"  ItemsPath="TMSapTransportView" />

              数据源中分组数据中的每组项目数目不等 ,可能是有5项,也有4项的,调试时检查数据源正确,

             在GRIDVIEW中显示时,却出现以下问题:

             1)显示的每个组的项目数取决于第一个组的项目数,如第一个组的项目数是5,那后面的项目的数都是5。

             2)如每一个组项目数是5,正确显示,可是后面组中也有项目数为5的,可显示时却少显示一个或几个项目,后面出现空的项目。

             3)使用了页面缓存,在回退到页面时,多余的空的项目就不见了,可是正常的项目数也变少了,重新加载一下数据,又加到了初始的样子。

              GRIDVIEW设置如下:

       <GridView
                            x:Name="TranShowGrid"
                            ItemClick="TranShowGrid_ItemClick_1"
                            Tapped="TranShowGrid_Tapped_1"
                            Height=" 500"               
                            Width="1366"
                           IsItemClickEnabled="True"
                           ItemsSource="{Binding  Source={StaticResource MyTransport}}"
                           ItemTemplate="{StaticResource TranGirdViewItemTemplate}"
                    >
                        <GridView.GroupStyle>
                            <GroupStyle>
                                <GroupStyle.HeaderTemplate>
                                    <DataTemplate>
                                        <StackPanel  Orientation="Horizontal"  VerticalAlignment="Center" >


                                            <StackPanel  Orientation="Horizontal" >
                                                <TextBlock  x:Name="GridViewGroupText"  Tapped="GridViewGroupText_Tapped_1"                                              
                                                Text="{Binding Transport}" Style="{StaticResource GridViewGroupTextStyle}"/>


                                            </StackPanel >

                                            <StackPanel  >
                                                <TextBlock Height="3"></TextBlock>
                                                <Path Stroke="Black"  Fill="Black"   >
                                                    <Path.Data>
                                                        <PathGeometry>
                                                            <PathFigure IsClosed="True" StartPoint="7,10">

                                                                <LineSegment Point="1,5" />
                                                                <LineSegment Point="1,15" />

                                                            </PathFigure>

                                                        </PathGeometry>
                                                    </Path.Data>
                                                </Path>

                                            </StackPanel >
                                        </StackPanel >
                                    </DataTemplate>
                                </GroupStyle.HeaderTemplate>

                        

                                <GroupStyle.Panel>
                                    <ItemsPanelTemplate>
                                        <VariableSizedWrapGrid/>
                                    </ItemsPanelTemplate>
                                </GroupStyle.Panel>

     


                            </GroupStyle>
                        </GridView.GroupStyle>
                       
                       
                    </GridView>

    请指教。

    2012年10月18日 3:41

答案

全部回复

  • Hi,

    从你给出的代码中并没有看出什么问题,我认为问题有可能是出现在对于数据进行分类的代码当中,你可以参考这篇文章检查一下你用来分组的代码:

    http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780627.aspx

    Hope this helps


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年10月19日 9:20
    版主
  • 其实VS2012就自带有这个例子的.你可以看看.在windows应用商店的网格应用程序里.
    2012年10月19日 9:43
  • Hi,

    从你给出的代码中并没有看出什么问题,我认为问题有可能是出现在对于数据进行分类的代码当中,你可以参考这篇文章检查一下你用来分组的代码:

    http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780627.aspx

    Hope this helps


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    HI,经过几天的测试 ,发现在本地计算机运行的时候,一切正常,可是在使用模拟器运行的就有这个问题,不知道是什么原因?

    数据获取代码:

      async public Task<List<TranSapTransports>> LoadTMSapVicByGroup(int choose)
            {

     

                try
                {

                    TMSapTranWCFServices.Service1Client wcf = new TMSapTranWCFServices.Service1Client();
                    byte[] SapVic;
                    if (choose==1)
                    {
                         SapVic = await wcf.GetSAPVicByUserAsync(TMSapTranPur.preUserCode);
                    }
                    else
                    {
                         SapVic = await wcf.GetVicByVehicleAsync(TMSapTranPur.preUserCode);
                    }
                    string XMLFileName = await wcf.GetSysTRAN_TMAPP_LocalXMLFileNameAsync();
                    XDocument doc = await Model.TMSAPTranTM.ByteToXML(SapVic, XMLFileName);
                    var data = from s in doc.Descendants("Sap_VicTran_List").Elements() select s;

                    List<TranSapTransports> tsts = new List<TranSapTransports>();
                    string strCountTotal =await  wcf.GetTranSysDataAsync("TRAN_TMAPP_DataGroupDelCount");
                    int CountTotal = Convert.ToInt32(strCountTotal);
                    foreach (var items in data)
                    {

                        TranSapTransports viewModel = new TranSapTransports();
                        viewModel.Transport = items.FirstAttribute.Value;
                        viewModel.UserName = TMSapTranPur.preUserCode;
                        int iCount = 0;
                 
                        foreach (var item in items.Elements("Sap_Data"))
                        {

                            if (iCount <= CountTotal-1)
                                {

                                    TMSapTranVic tsl = new TMSapTranVic();
                                    tsl.ReceivingAddress = item.Element("ReceivingAddress").Value.ToString().Trim();
                                    tsl.TplsSate = item.Element("TplsSate").Value.ToString().Trim();
                                    tsl.MakingPeople = item.Element("MakingPeople").Value.ToString().Trim();
                                    tsl.MakingDate = item.Element("time").Value;

                                    tsl.NumberOfOriginal = item.Element("NumberOfOriginal").Value.ToString().Trim();
                                    tsl.DocumentNumber = item.Element("DocumentNumber").Value;
                                    tsl.WagonNumber = item.Element("WagonNumber").Value;
                                    tsl.TransportationType = item.Element("TransportationType").Value;
                                    tsl.ProvincesDescription = item.Element("ProvincesDescription").Value;
                                    tsl.ToPartyCity = item.Element("ToPartyCity").Value;

                                    tsl.TonsOfPrice = item.Element("TonsOfPrice").Value;
                                    tsl.Money = item.Element("Money").Value;
                                    tsl.PriceWight = item.Element("PriceWight").Value;


                                    Model.TMSAPTranTM mt = new Model.TMSAPTranTM();
                                    //  await  mt.SetIcon(wcf, CurrentUserPermission.UserCode, tsl.UserIcon);

                                    viewModel.TMSapTransportView.Add(tsl);
                                    iCount++;
                                }
                                else
                                {
                                    break;
                                }                     

                         

                        }
                        tsts.Add(viewModel);
                    }

                    return tsts;
                }
                catch (Exception)
                {

                    return null;
                }

            }

    2012年10月24日 6:24
  • Hi,

    从你给出的代码中并没有看出什么问题,我认为问题有可能是出现在对于数据进行分类的代码当中,你可以参考这篇文章检查一下你用来分组的代码:

    http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780627.aspx

    Hope this helps


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    HI,Aaron Xue

         看过你的主页,认为你是个和我很有缘的人,你的个人描述打动了我,我决定和你交个朋友,不知你是否愿意,我的QQ号,310331500  人到中年

      

    2012年10月24日 6:30
  • 其实VS2012就自带有这个例子的.你可以看看.在windows应用商店的网格应用程序里.

    谢谢楼上
    2012年10月24日 7:56
  • Hi,

    看了你取信息的步骤之后,感觉这应该是GridView本身的问题。你的代码应该是没有问题的,你可以试试把ItemsPanel中的控件换掉,感觉有可能是这个引起的问题。并且我建议你在实际机器上进行一下测试,看看有没有问题。

    PS因为这是以官方名义提供的支持所以很抱歉在这里我不能给你个人信息,不过你如果对Windows Store app开发有任何问题你可以提在这里,我和Bob都会很愿意为你服务。


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年10月26日 9:32
    版主
  • 我Hi,

    看了你取信息的步骤之后,感觉这应该是GridView本身的问题。你的代码应该是没有问题的,你可以试试把ItemsPanel中的控件换掉,感觉有可能是这个引起的问题。并且我建议你在实际机器上进行一下测试,看看有没有问题。

    PS因为这是以官方名义提供的支持所以很抱歉在这里我不能给你个人信息,不过你如果对Windows Store app开发有任何问题你可以提在这里,我和Bob都会很愿意为你服务。


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    hi,很高兴您对我的帮助,我会有很多的问题提出,因为我和你一样,喜欢Windows Store app,喜欢这样的东西(我更喜欢SURFACE,就是太贵),我们一定会成为朋友的。
    2012年10月29日 8:25