Page.IsPostBack 是用來檢查目前網頁是否為第一次加載,當使用者第一次浏覽這個網頁時Page.IsPostBack 會傳回False,不是第一次浏覽這個網頁時就傳回True!
Page_Load 事件中就可以使用ispostback來避免做一些重復的動作。主要用於對一些控件做初始化和數據綁定 有時如果不用ispostback 會發現有時出現一些莫名的錯誤
這裡我舉二個例子
例題一(控件初始化):頁面有一個標簽(初始顯示數字為 1 ) 和一個按紐,如何實現單擊一次按鈕標簽顯示的數字相當加1
前台我們定義一個lbl1標簽和一個btn1按紐
錯誤代碼:
復制代碼
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 lbl1.Text = "1";
4 }
5 protected void btn1_Click(object sender, EventArgs e)
6 {
7 lbl1.Text = (Convert.ToInt32(lbl1.Text) + 1).ToString();
8 }
復制代碼
上面代碼頁面初始lbl1初始顯示數字為1,不管你單擊btn1按紐多少次lbl1顯示的數字永遠為2
錯誤原因:當你每單擊一次btn1按紐後面文件是先執行Page_Load(..)再執行btn1_Click(..),而每次得到的lbl1的初始值為1而累加不了
正確代碼:
正確代碼
例題二(數據控件綁定):頁面有gridview控件後台綁定數據源,如何正確地實現對數據行的編輯更新刪除等操作
有二種方法可以做到
方法一是gridview控件自帶的commentfiele 編輯更新刪除功能
方法二是用TemplateField自定義編輯更新刪除功能
這裡我們僅實現編輯功能:
方法一(gridview控件自帶的commentfiele 編輯更新刪除功能)前台頁面代碼
1 <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
2 onrowediting="GridView1_RowEditing">
3 <Columns>
4 <asp:CommandField ShowCancelButton="False" ShowEditButton="True" />
5 </Columns>
6 </asp:GridView>
方法一(gridview控件自帶的commentfiele 編輯更新刪除功能)後台頁面代碼
復制代碼
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
gridview1Bind(); //此方法不放在IsPostBack裡面也可以
}
private void gridview1Bind()
{
DataTable dt = sqlhelper.ExecuteQuery("SELECT * FROM [Products]", CommandType.Text);
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
gridview1Bind();
}
復制代碼
方法二(用TemplateField自定義編輯更新刪除功能)前台代碼
復制代碼
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" OnRowEditing="GridView1_RowEditing">
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="編輯" />
</ItemTemplate>
<EditItemTemplate>
<asp:Button ID="Button1" runat="server" CommandName="Update" Text="更新" /> <asp:Button
ID="Button2" runat="server" CommandName="Cancel" Text="取消" />
</EditItemTemplate>
<ControlStyle BackColor="#FFC0C0" />
</asp:TemplateField>
</Columns>
</asp:GridView>
復制代碼
方法二(用TemplateField自定義編輯更新刪除功能)後台代碼
代碼
注意方法二gridview1Bind() 不放在ispostback裡面的話會報"回發或回調參數無效"這樣的錯
方法一可以不放在ispostback裡面但方法二必須放在裡面否則會報錯。