大腸包小腸簡易版 Part 2

摘要:大腸包小腸簡易版 Part 2

繼上次的GrIdview的功能還有稍微的瑕疵,我今天來一次把他補齊,不知道有沒有人看我的文章(希望是有低)

大家一定會發現到分頁為甚麼會錯誤呢?? 這個就關係到GridView.Row問題了


正常來說點第一個絕對OK不會有甚麼問題

為什麼到第二頁會發生這樣的問題呢? 索引超出範圍<=這個問題網路上非常的多。

 

以上圖片講解有錯誤我希望大家能夠給我糾正~謝謝

 

到了第二頁大家可以用中斷點試試看     ((Literal)GridView1.Rows[index].FindControl("Literal1")).Visible = true;
看Row[index]的數值是多少。
大家可以看到每頁的Row都是10個不多不少,所以唯一解決的辦法就是 你點到的數值-(頁數*10),這樣就可以解決
頁面錯誤的情況了。

目前我只放有修正的程式碼。

 

   protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int Page = 0;
            if (e.CommandName == "q")
            {
                int index = int.Parse(e.CommandArgument.ToString());
                if (index < 10)//以10頁為例
                {
                    ((Literal)GridView1.Rows[lasIndex].FindControl("Literal1")).Visible = false;
                    ((Literal)GridView1.Rows[index].FindControl("Literal1")).Visible = true;
                    lasIndex = index;
              
                }
                else
                {

                    Page = int.Parse( GridView1.PageIndex.ToString());
                    int Pages = index - (Page * 10);// 編號-(頁數*10)
                    ((Literal)GridView1.Rows[lasIndex].FindControl("Literal1")).Visible = false;
                    ((Literal)GridView1.Rows[Pages].FindControl("Literal1")).Visible = true;
                    lasIndex = Pages;


                }
            
            }
        }

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            DBInit();
            lasIndex = 0;//假如你的第一頁為9Row 第二頁只有2Row<=請務必換頁的時候把lasindex=0 要不然也會發生錯誤        }

 

第二頁就沒有錯誤產生了。
 

以上我又學到另一個絕招了~真的非常開心,感謝目前所待的公司能夠給我機會學習。我也把我所學的東西放在網路上給有緣人分享,希望大家能夠給我指點。假如以上有錯誤情提供意見,謝謝