public void GridBind_Random()
    {
        myData = myDataSet.getRandomWord(Session["SQLStr"].ToString());
        myData = mySort.Random_Sort(myData);
        GridView1.AllowPaging = true;
        GridView1.PageSize = 10;
        GridView1.DataSource = myData.Tables[0].DefaultView;
        GridView1.DataBind();
    }
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {myData.Tables[0].Rows[e.Row.RowIndex]["chinese"].ToString()}<asp:Label ID="japanese" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"japanese") %> ></asp:Label>
<asp:Label ID="answer" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"chinese") %>  >我的dataset在绑定前用Random_Sort函数随机重排了rows的顺序,然后绑定的,后来调试发现有问题,跟踪调试发现,从myData.Tables[0].Rows[0]开始都与japanese.text绑定的值不一样了,请问这是为什么?我监视dataset的table的值,myData.Tables[0].Rows[i]的值都是一致的,不一样的都是前台用<%#DataBinder.Eval(Container.DataItem,"japanese") %> 绑定的值,请问这是为什么?

解决方案 »

  1.   

    重排也没有赋到新的Table?  建议用dataview进行排序
      

  2.   

    我的随机排序函数
    public DataSet Random_Sort(DataSet myData)
            {
                int ArraySize = myData.Tables[0].Rows.Count;
                int[] array = new int[ArraySize];
                for (int i = 0; i < ArraySize; i++)
                {
                    array[i] = i;
                }            Random rnd = new Random();
                for (int j = 0; j < ArraySize; j++)
                {
                    int pos = rnd.Next(j, ArraySize);
                    DataRow tempRow = myData.Tables[0].Rows[pos];
                    for (int k = 0; k < myData.Tables[0].Columns.Count; k++)
                    {
                        object temp = myData.Tables[0].Rows[pos][k];
                        myData.Tables[0].Rows[pos][k] = myData.Tables[0].Rows[j][k];
                        myData.Tables[0].Rows[j][k] = temp;
                    }
                }
                return myData;
            }
    怎么赋到Table上??
    gridview怎么随机排序??