datagrid分頁問題,高手救命我啊,我快被整死了解決後高分相贈!!!!
這個我的頁面代碼:
<asp:datagrid id="MyDataGrid" runat="server"
HorizontalAlign="Center" AlternatingItemStyle-BackColor="#eeeeee"
HeaderStyle-BackColor="#aaaadd" Font-Size="8pt"
CellSpacing="0" CellPadding="3" GridLines="Both" BorderWidth="1"
BorderColor="black" OnPageIndexChanged="MyDataGrid_Page" PagerStyle-HorizontalAlign="Right"
PagerStyle-Mode="NumericPages" PageSize="15" AllowPaging="true" AllowCustomPaging="false" AllowSorting="True" AutoGenerateColumns="False" OnItemDataBound="MyDataGrid_ItemDataBound" style="left: 55px; position: absolute; top: 66px" Width="707px">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#AAAADD" Font-Bold="True" HorizontalAlign="Center"></HeaderStyle>
<PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
<Columns>
<asp:BoundColumn HeaderText="科目編號" DataField="acct_code" >
</asp:BoundColumn>
<asp:BoundColumn HeaderText="科目名稱" DataField="acct_name" >
<HeaderStyle Width="320px" />
</asp:BoundColumn>
<asp:BoundColumn HeaderText="借方(HKD)" DataField="acct_bal_base" >
</asp:BoundColumn>
<asp:BoundColumn HeaderText="貸方(HKD)" DataField="acct_bal_fc">
</asp:BoundColumn>
<asp:BoundColumn HeaderText="外幣" DataField="acct_curr_code" >
</asp:BoundColumn>
<asp:ButtonColumn Text="選擇" CommandName="Select"></asp:ButtonColumn>
</Columns>
<SelectedItemStyle BorderStyle="None" />
</asp:datagrid>
<asp:label id="lblPageCount" runat="server" style="left: 400px; position: absolute; top: 455px"></asp:label>
<asp:label id="lblCurrentIndex" runat="server" style="left: 462px; position: absolute; top: 455px"></asp:label>
<asp:linkbutton id="btnFirst" onclick="PagerButtonClick" runat="server"
Font-size="8pt" ForeColor="navy" CommandArgument="0" style="left: 550px; position: absolute; top: 455px"></asp:linkbutton>
<asp:linkbutton id="btnPrev" onclick="PagerButtonClick" runat="server"
Font-size="8pt" ForeColor="navy" CommandArgument="prev" style="left: 600px; position: absolute; top: 455px"></asp:linkbutton>
<asp:linkbutton id="btnNext" onclick="PagerButtonClick" runat="server"
Font-size="8pt" ForeColor="navy" CommandArgument="next" style="left: 650px; position: absolute; top: 455px"></asp:linkbutton>
<asp:linkbutton id="btnLast" onclick="PagerButtonClick" runat="server"
Font-size="8pt" ForeColor="navy" CommandArgument="last" style="left: 700px; position: absolute; top: 455px"></asp:linkbutton>
一個datagrid,後面是最前一頁,後一頁,上一頁最後頁的幾個按鈕
BindGrid()
public void BindGrid()
{
Cart = new DataTable();
Cart.Columns.Add("acct_code", typeof(string));
Cart.Columns.Add("acct_name", typeof(string));
Cart.Columns.Add("acct_bal_base", typeof(double));
Cart.Columns.Add("acct_bal_fc", typeof(double));
Cart.Columns.Add("acct_curr_code", typeof(string));
row = new ReaderSql();
row.SqlString = "select chart_account.acct_code,acct_name ,acct_curr_code,sp.acct_bal_base,sp.acct_bal_fc from chart_account left join (select acct_code,acct_bal_base,acct_bal_fc from acct_beg_bal where dept_code='11' ) as sp on chart_account.acct_code=sp.acct_code where chart_account.detail_acct='1' order by chart_account.acct_code ";
SqlDataReader da2 = row.getDataSource();
bool found1 = false;
while (da2.Read())
{
found1 = true;
string acctcode = row.getValue("acct_code").ToString();
string acctname = row.getValue("acct_name").ToString();
Label4.Text = row.getValue("acct_bal_base").ToString();
string balfc = row.getValue("acct_bal_fc").ToString();
string currcode = row.getValue("acct_curr_code").ToString();
DataRow CartRow = Cart.NewRow();
CartRow[0] = acctcode;
CartRow[1] = acctname;
if (Label4.Text!= "")
{
double ii;
try
{
ii = double.Parse(Label4.Text);
}
catch
{
ii = 0;
}
if (ii >0)
{
CartRow[2] = ii;
}
else
{
if (ii < 0)
{
CartRow[3] = -ii;
}
}
}
if (Label4.Text.Trim()!="")
{
if (currcode != "HKD")
{
CartRow[4] = "(" + currcode + ")" + balfc;
}
}
Cart.Rows.Add(CartRow);
MyDataGrid.DataSource = Cart.DefaultView;
MyDataGrid.DataBind();
}
row.CloseAll();
初始華的時候調用一次BindGrid()
上面的那幾個按鈕事件中的代碼
string arg = ((LinkButton)sender).CommandArgument.ToString();
switch (arg)
{
case "next":
if (MyDataGrid.CurrentPageIndex == 0)
{
}
else
{
MyDataGrid.CurrentPageIndex = 0;
}
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
{
MyDataGrid.CurrentPageIndex += 1;
}
// MyDataGrid.CurrentPageIndex = MyDataGrid.PageCount;
break;
case "prev":
if (MyDataGrid.CurrentPageIndex > 0)
{
MyDataGrid.CurrentPageIndex -= 1;
}
break;
case "last":
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
break;
default:
MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg);
break;
BindGrid()//在這裡重新榜定
運行first 和pre的時候都不會錯,因為它們的currentpageindex都為0,但是只要currentpageindex變化就不可以,BindGrid出錯,出現currentpageindex is invalid value這樣的提示,折磨死我了請賜教