摘要:大腸包小腸簡易版 Part 2
繼上次的GrIdview的功能還有稍微的瑕疵,我今天來一次把他補齊,不知道有沒有人看我的文章(希望是有低)
大家一定會發現到分頁為甚麼會錯誤呢?? 這個就關係到GridView.Row問題了
為什麼到第二頁會發生這樣的問題呢? 索引超出範圍<=這個問題網路上非常的多。
到了第二頁大家可以用中斷點試試看 ((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 要不然也會發生錯誤 }
第二頁就沒有錯誤產生了。
以上我又學到另一個絕招了~真的非常開心,感謝目前所待的公司能夠給我機會學習。我也把我所學的東西放在網路上給有緣人分享,希望大家能夠給我指點。假如以上有錯誤情提供意見,謝謝