TabContainer的OnActivetabChanged用法
//测评综合定专业,只有选择了批次才可以进入,而且本科和专科内容不能同时选,让界面整洁而且无失误
//下面代码没有执行,放入form_load测试--20230722-处理中
//测试代码执行
//aspnetajaxjavascript.Msg(this.UpdatePanel_ks_yjtb, TabContainer_yjtb.ActiveTabIndex.ToString(), "2", "2000");
//this.UpdatePanel_ks_yjtb.Update();
// return;
//知识点:asp.net 事件执行顺序,控件事件激发后,首先执行form_load,然后才是该控件事件的代码。例如这里:
//激发了事件,执行form_load,而form_load中TabContainer_yjtb.ActiveTabIndex=0,则下面的代码不会被执行,因为TabContainer_yjtb.ActiveTabIndex=0了
//而不是当前的测评综合定专业的页面索引2,只需要把 if (TabContainer_yjtb.ActiveTabIndex==2)这个条件去掉就可以了
//另外的fineuipro是内置了asp.net ajax,单击了控件事件,不会引发form_load,而且asp.net原生控件事件不执行fineuipro属性代码方法,但是
//asp.net的form_load中可以执行asp.net原生控件和fineuipro控件属性方法等
在前台TabContainer添加事件
OnActivetabChanged="TabContainer1_ActiveTabChanged"
后台代码在OnActivetabChanged事件中执行GridView的绑定事件
protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
{
DataSet ds = new DataSet();
GridView1.DataSource = GetData(ds).Tables["Table_VIP"];
GridView1.DataBind();
}
注意,需要在Page_Load方法里调用该事件,否则在切换Tab的时候是没有反应的,因为它不会postback: 下面的处理办法是错误的,因为tabcontainer的属性autopostback是false,改为true搞定
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.TabContainer1_ActiveTabChanged(sender, e);
}
}
完整代码如下
前台
<%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="AccessRemoteData._Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register TagPrefix="UC1" TagName="Control1" Src="~/WebUserControl1.ascx" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0"
OnActivetabChanged="TabContainer1_ActiveTabChanged">
<asp:TabPanel runat="server" HeaderText="TabPanel1" ID="TabPanel1">
<ContentTemplate>
<UC1:Control1 ID="userControl1" runat="server" />
</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel runat="server" HeaderText="TabPanel2" ID="TabPanel2">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
</asp:Content>
后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace AccessRemoteData
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.TabContainer1_ActiveTabChanged(sender, e);
}
}
private DataSet GetData(DataSet ds)
{
string sqlConn = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
SqlConnection conn = new SqlConnection(sqlConn);
conn.Open();
string strSQL = "SELECT * FROM Table_VIP";
SqlDataAdapter adpt = new SqlDataAdapter(strSQL, conn);
adpt.Fill(ds, "Table_VIP");
return ds;
}
protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
{
DataSet ds = new DataSet();
GridView1.DataSource = GetData(ds).Tables["Table_VIP"];
GridView1.DataBind();
}
}
}
转载于:https://www.cnblogs.com/hainange/archive/2011/07/19/6153592.html