Page.IsPostBack 获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。

一个页面第一次显示的时候
isPostBack=false
然后你在这个页面上点击按钮或其它东西提交的时候,
isPostBack=true 

例子:

一个页面,一个ListBox控件。一个Label。

初次加载时绑定数据到ListBox控件。

用户选择ListBox的项后,自动在Label中显示选中项的值。

代码:
以下代码是没有Page.IsPostBack的时候

protected void Page_Load(object sender, EventArgs e)
    {
        dt = 数据源;
        ListBox1.DataSource = dt; //为ListBox1绑定数据
        ListBox1.DataTextField = "dname"; //设置ListBox1每项的文字为数据源的dname列中的值
        ListBox1.DataValueField = "dfname"; //设置ListBox1每项的值为数据源的dfname列中的值
        ListBox1.DataBind();
    }

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
         Label1.Text = ListBox1.SelectedValue; //当用户选中ListBox中的列时在Label中显示选中列的值
    }

此时运行页面,在选中ListBox中的值后Label中无法显示ListBox选中项的值。

因为在ListBox的SelectedIndexChanged(控件中的值被选中)发生后,页面自动向服务器提交表单。

服务器处理后(自动提交后服务器将处理protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e里面的内容)),返回客户端,页面重新读取,此时又会运行Page_Load里面的代码,所以页面又会是第一次加载时候的样子。Label中就不会显示 ListBox中选中项的值。

如果Page_Load换成这样:

if (!Page.IsPostBack)
    {
        dt = 数据源;
        ListBox1.DataSource = dt; //为ListBox1绑定数据
        ListBox1.DataTextField = "dname"; //设置ListBox1每项的文字为数据源的dname列中的值
        ListBox1.DataValueField = "dfname"; //设置ListBox1每项的值为数据源的dfname列中的值
        ListBox1.DataBind();
    }

那么,在服务器处理了SelectedIndexChanged后。客户端将得到提示,这是响应客户端回发而加载。那么,绑定ListBox的代码将不会运行。Label中就能正确显示ListBox选中项的值了!