Wizard控件的使用:
Wizard控件使用多个步骤来描绘用户的输入信息,该控件内的每个步骤 均会给一个StepType。可以在当步骤到Complete时,对所有的数据进行处理。
事件:需要隐藏信息的时候,可以在中间步骤中使用WizardStepChanged事件,其它的事件如点击完成、取消、下一步和上一步的时候的事件等。
TemplateWizardStep,提供一个允许用户自定义模板生成步骤的方法。对它的访问,不能通过像其它步骤一样的直接访问方式,二是要通过它的模板ID来访问。所以,如果在Wizard中的步骤采用这个方式,访问数据的时候,要注意。
下边看看一般的做法:
拖控件到设计视图,点击智能标签的Auto Format为其设置格式。这里采用彩色型,Colorful。然后是添加步骤,在智能标签中选择:Add/Remove WizardSteps...,如图:
步骤中的title表示名字,其余的,AllowReturn:是否运行步骤间通信,EnableTheming:是否允许使用主题,EnableViewState:是否允许保存往返信息,SkinID:使用的皮肤ID,StepType有好几种,一般来讲,Auto会自动检测为开始步骤还是中间步骤,但是完成步骤一定要手动选择Complete。在这里,第三步,我们使用了一个由模板步骤(TemplatedWizardStep)自定义的步骤,由于访问它的数据,需要通过其ID 来访问,使用设置ID为mb。如图:
在完成步骤,手动选择Complete,如图:
完成后,步骤算是添加好了,但是每一步骤还没有具体内容。首先解决向导的字体太小的问题。将Wizard控件拖大,但是,这个时候,发现左边的导航和右边的内容同时增大,需要将SideBarStyle下的Width属性指定宽度,根据具体情况而指定,这里指定100px。然后又有个问题,这个字体也太下了,所以呢,将Wizard控件的Font下的Size属性指定大小,这里指定1.2em。这里要注意,是Wizard控件的Font下的Size属性,不是其它任何自控件或子项目的Font属性。因为这个Wizard的属性实在太多了。
还有一个问题,那就是,使用英语版本的VS,或是VWD时,默认的上一不,下一步,完成,取消这些按钮都是英语的,就像我。这里要比用中文的麻烦点点,要将StartNextButton设置成“下一步”,StepPreviousButtonText设置成“上一步”,
StepNextButtonText设置成“下一步”,FinishPreviousButtonText设置成“上一步”,FinishCompleteButtonText设置成“完成”,如果要在每一步中显示取消按钮,则要将DisplayCancelButton设置为true,并且把CancelButtonText设置为“取消”。
现在来为每一步添加内容,首先需要编辑Wizard的模板,做个Header,就是添加个欢迎词。这里是通过智能标签的Edit Templated来做的,如图:
然后,为“基本信息”添加控件,如图:ID分别是tbname和tbpws
两个TextBox确实很难对齐,最后只好将前天的“用户名”和“密码”做成Label,然后通过设置Label的Width属性来控制。
为“详细信息”添加控件,如图:ID分别是ddlsf,tbphoto,rdbgk
再为兴趣爱好添加控件,如图:chk
为会员等级添加控件,如图:ddldj
完成步骤中,随便整了些来表示各步骤中的信息:
也就是几个标签和一个PlaceHolder。各步骤分别添加的什么控件和各控件的ID,就只好对照这代码看了,如下:
- <asp:Wizard ID="Wizard1" runat="server" BackColor="#FFFBD6"
- BorderColor="#FFDFAD" BorderWidth="1px" Font-Names="Verdana" Font-Size="1.2em"
- Height="210px" StartNextButtonText="下一步" Width="405px" ActiveStepIndex="0"
- FinishCompleteButtonText="完成" FinishPreviousButtonText="上一步"
- StepNextButtonText="下一步" StepPreviousButtonText="上一步"
- CancelButtonText="取消" DisplayCancelButton="True"
- onactivestepchanged="Wizard1_ActiveStepChanged"
- onfinishbuttοnclick="Wizard1_FinishButtonClick"
- oncancelbuttοnclick="Wizard1_CancelButtonClick">
- <WizardSteps>
- <asp:WizardStep runat="server" title="基本信息">
- <asp:Label ID="Label1" runat="server" Text="用户名:" Width="92px"></asp:Label>
- <asp:TextBox ID="tbname" runat="server"></asp:TextBox>
- <br />
- <asp:Label ID="Label2" runat="server" Text="密 码:" Width="92px"></asp:Label>
- <asp:TextBox ID="tbpws" runat="server"></asp:TextBox>
- </asp:WizardStep>
- <asp:WizardStep runat="server" title="详细信息">
- <asp:Label ID="Label5" runat="server" Font-Size="Medium" Height="20px"
- Text="所在省份:" Width="87px"></asp:Label>
- <asp:DropDownList ID="ddlsf" runat="server" Font-Size="Medium"
- Width="126px">
- <asp:ListItem>重庆</asp:ListItem>
- <asp:ListItem>北京</asp:ListItem>
- <asp:ListItem>天津</asp:ListItem>
- <asp:ListItem>上海</asp:ListItem>
- <asp:ListItem>广东</asp:ListItem>
- <asp:ListItem>广西</asp:ListItem>
- <asp:ListItem>云南</asp:ListItem>
- <asp:ListItem>浙江</asp:ListItem>
- <asp:ListItem>四川</asp:ListItem>
- </asp:DropDownList>
- <br />
- <asp:Label ID="Label6" runat="server" Font-Size="Medium" Height="20px"
- Text="电话号码:" Width="87px"></asp:Label>
- <asp:TextBox ID="tbphoto" runat="server"></asp:TextBox>
- <br />
- <asp:Label ID="Label7" runat="server" Font-Size="Medium"
- style="text-align: center" Text="是否公开详细信息:"></asp:Label>
- <br />
- <asp:RadioButtonList ID="rdbgk" runat="server" Font-Size="Medium"
- RepeatDirection="Horizontal">
- <asp:ListItem>不</asp:ListItem>
- <asp:ListItem>好吧</asp:ListItem>
- </asp:RadioButtonList>
- </asp:WizardStep>
- <asp:TemplatedWizardStep ID="mb" runat="server" Title="兴趣爱好">
- <ContentTemplate>
- <asp:CheckBoxList ID="chk" runat="server" Font-Size="Medium" RepeatColumns="3"
- RepeatDirection="Horizontal" Width="239px">
- <asp:ListItem>谈天</asp:ListItem>
- <asp:ListItem>说地</asp:ListItem>
- <asp:ListItem>军事</asp:ListItem>
- <asp:ListItem>做梦</asp:ListItem>
- <asp:ListItem>电脑</asp:ListItem>
- <asp:ListItem>想你</asp:ListItem>
- </asp:CheckBoxList>
- </ContentTemplate>
- </asp:TemplatedWizardStep>
- <asp:WizardStep runat="server" Title="会员等级">
- <asp:DropDownList ID="ddldj" runat="server" Font-Size="Medium" Width="130px">
- <asp:ListItem>普通会员</asp:ListItem>
- <asp:ListItem>VIP会员</asp:ListItem>
- <asp:ListItem>超级会员</asp:ListItem>
- </asp:DropDownList>
- </asp:WizardStep>
- <asp:WizardStep runat="server" StepType="Complete" Title="完成">
- 注册成功,您的注册信息如下,请牢记:<br />
- 用户名:<asp:Label ID="lblname" runat="server" Text="Label"></asp:Label>
- <br />
- 密码:<asp:Label ID="lblpws" runat="server" Text="Label"></asp:Label>
- <br />
- <asp:Label ID="lblsf" runat="server" Text="Label"></asp:Label>
- <br />
- <asp:Label ID="lblphoto" runat="server" Text="Label"></asp:Label>
- <br />
- 您目前是<asp:Label ID="lbldj" runat="server" Text="Label"></asp:Label>
- <br />
- 您订阅了以下相关期刊:<br />
- <asp:PlaceHolder ID="ph" runat="server"></asp:PlaceHolder>
- </asp:WizardStep>
- </WizardSteps>
- <SideBarButtonStyle ForeColor="White" />
- <NavigationButtonStyle BackColor="White" BorderColor="#CC9966"
- BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em"
- ForeColor="#990000" />
- <SideBarStyle BackColor="#990000" Font-Size="0.9em" VerticalAlign="Top"
- Width="100px" />
- <HeaderStyle BackColor="#FFCC66" BorderColor="#FFFBD6" BorderStyle="Solid"
- BorderWidth="2px" Font-Bold="True" Font-Size="0.9em" ForeColor="#333333"
- HorizontalAlign="Center" />
- <HeaderTemplate>
- 欢迎来到山高月大部落
- </HeaderTemplate>
- </asp:Wizard>
有点长,对照着做一次了,感觉还是比较简单。
最后,要处理各步骤中的数据,这里只用了ActiveStepChanged和FinishButtonClick事件,其它事件可以在属性面板中看到。代码如下:
- protected void Wizard1_ActiveStepChanged(object sender, EventArgs e)
- {
- lblname.Text = tbname.Text;
- lblpws.Text = tbpws.Text;
- if (rdbgk.SelectedValue == "不")
- {
- lblsf.Text = "用户隐藏了身份信息";
- lblphoto.Visible = false;
- }
- else
- {
- lblsf.Text = "省份是:" + ddlsf.SelectedValue;
- lblphoto.Text = "电话号码是:" + tbphoto.Text;
- }
- //模板控件中的控件,需要经过这个方式,将里边的控件先取出来,然后再取值。
- CheckBoxList cb1 = (CheckBoxList)mb.ContentTemplateContainer.FindControl("chk");
- for (int i = 0; i < cb1.Items.Count; i++)
- {
- if (cb1.Items[i].Selected)
- {
- Label lbl = new Label();
- lbl.ID = "lbl" + i;
- lbl.Text = cb1.Items[i].Text + "<br>";
- ph.Controls.Add(lbl);
- }
- }
- lbldj.Text = ddldj.SelectedValue;
- }
- protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
- {//完成的时候,在这个函数里边将信息写入数据库
- string name = "" + tbname.Text;
- Response.Write("<script>alert('" + name + ",感谢您注册!')</script>");
- }
步骤太多,过段时间可能会忘,需要时间和实践来巩固和灵活。