如何自定义向导控件? [英] How to customize Wizard control?

查看:60
本文介绍了如何自定义向导控件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是ASP.NET的新开发人员,并且正在使用此编程语言为我开发第一个Web应用程序.我正在尝试通过开发以下方案来使用向导控件来管理用户:

**向导步骤1:**包含一个文本框,管理员可以在其中放置用户的用户名
当他单击下一步按钮时,将对照数据库中的用户表检查用户名;如果他存在于数据库中,则他的信息将显示在向导的步骤2"中,并且他的信息将为只读.如果不存在,管理员将收到一条消息通知.

**向导第2步:**包含一个显示用户信息的中继器或占位符.

**向导步骤3:**同样,如果用户存在,则此步骤将显示该用户在系统中的当前角色,并显示一个用于编辑他的角色的按钮


我的ASP.NET代码:

I am a new ASP.NET developer and I am developing the first web application to me with this programming language. I am trying to use the Wizard Control for managing the user by developing the following scenario:

**Wizard Step1:** contains a TextBox where the admin can put the username of the user
and when he clicks on the next button the username will be checked a against the users table in the database; if he is existed in the database, his information will be shown in the Wizard Step2 and his information will be read-only. If he is not existed, the admin will be notified with a message.

**Wizard Step2:** contains a Repeater or Placeholder that shows the user information.

**Wizard Step3:** Also, if the user existed this step will show the current role of this user in the system with showing a button for editing the role of him


My ASP.NET code:

<asp:Wizard ID="Wizard1" runat="server" DisplaySideBar="false" Width="80%" >
            <wizardsteps>
                <asp:WizardStep ID="WizardStep1" runat="server" title="Employee Username/Network ID">
                    <table border="0">
                        <tr>
                            <td class="InputLabel">Username:</td>
                            <td class="InputControl">
                                <asp:TextBox ID="TextBox1" runat="server" />
                            </td>
                        </tr>
                    </table>

                <asp:WizardStep ID="WizardStep2" runat="server" title="Manage User">
                    <div class="content">
                        <asp:Repeater ID="Repeater1" runat="server">
                            <itemtemplate>

                            </itemtemplate>

                    </div>

                <asp:WizardStep ID="WizardStep3" runat="server" Title="Edit User Role">
                    <label for="role">Current Role: </label>
                    <asp:Label ID="Label1" runat="server" BackColor="#FFFF99" Font-Bold="True" ForeColor="#000099" />
                    <asp:RadioButtonList id="radio1" runat="server" TextAlign="left">
                        <asp:ListItem id="option1" runat="server" value="Admin" />
                        <asp:ListItem id="option2" runat="server" value="Contribute" />
                        <asp:ListItem id="option3" runat="server" value="User" />

                    <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Clicked" />

            </wizardsteps>

            <HeaderTemplate>
               <ul id="wizHeader">
                   <asp:Repeater ID="SideBarList" runat="server">
                       <itemtemplate>
                           <li><a class="<%# GetClassForWizardStep(Container.DataItem) %>" title="<%#Eval(" name=")%>">
                               <%# Eval("Name")%></a> </li>
                       </itemtemplate>

               </ul>
           </HeaderTemplate>





而背后的代码是





And the Code-Behind is

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class UserManagement : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {

        string username = TextBox1.Text;

        string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=psspdb;Integrated Security=True";
        string cmdText = "SELECT * FROM employee WHERE Username = @Username";

        //For checking the user
        if (username != null)
        {
            if (CheckUsername(username) == true)
            {
                try
                {
                    SqlConnection conn = new SqlConnection(connString);
                    conn.Open();
                    SqlDataReader myReader = null;
                    SqlCommand myCommand = new SqlCommand(cmdText, conn);
                    myReader = myCommand.ExecuteReader();
                    while (myReader.Read())
                    {
                        Console.WriteLine(myReader["Name"].ToString());
                        Console.WriteLine(myReader["JobTitle"].ToString());
                        Repeater1.DataSource = myReader;
                        Repeater1.DataBind();
                        myReader.Close();
                        conn.Close();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }

        //For sending object to the Wizard1.PreRender
        Wizard1.PreRender += new EventHandler(Wizard1_PreRender);

    }


    //Method for checking the existence of the username in the database (retrun true or false)
    private bool CheckUsername(string username)
    {
        string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=psspdb;Integrated Security=True";
        string cmdText = "SELECT Count(*) FROM employee WHERE Username = '" + username + "'";

        using (SqlConnection conn = new SqlConnection(connString))
        {
            conn.Open(); // Open DB connection.

            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                int count = (int)cmd.ExecuteScalar();
                // True (> 0) when the username exists, false (= 0) when the username does not exist.
                return (count > 0);
            }
        }

    }


    protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
        if (Wizard1.ActiveStepIndex == 1)
        {
            string username = TextBox1.Text;
        }
    }


    //Method for replacing the default sidebar of the Wizard Control with a custom sidebar (represented in a repeater)
    protected void Wizard1_PreRender(object sender, EventArgs e)
    {
        Repeater SideBarList = Wizard1.FindControl("HeaderContainer").FindControl("SideBarList") as Repeater;
        SideBarList.DataSource = Wizard1.WizardSteps;
        SideBarList.DataBind();
    }

    protected string GetClassForWizardStep(object wizardStep)
    {
        WizardStep step = wizardStep as WizardStep;

        if (step == null)
        {
            return "";
        }
        int stepIndex = Wizard1.WizardSteps.IndexOf(step);

        if (stepIndex < Wizard1.ActiveStepIndex)
        {
            return "prevStep";
        }
        else if (stepIndex > Wizard1.ActiveStepIndex)
        {
            return "nextStep";
        }
        else
        {
            return "currentStep";
        }
    }


    protected void Button1_Clicked(Object sender, EventArgs e)
    {
        // When the button is clicked,
        // show the new role of the user
        //Label1.Text = "...button clicked...";

    }



}



        //Session["Username"] = Username.Text;
        //String strUserName = Request.QueryString["Username"];

        //string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=psspdb;Integrated Security=True";
        //string cmdText = "SELECT * FROM employee WHERE Username = @Username";

        ////For checking the user
        //if (Request.QueryString["Username"] != null)
        //{
        //    //String strUserName = Request.QueryString["Username"];

        //    ////Check userName Here
        //    //String strReturnStatus = "false";

        //    if (CheckUsername(Request.QueryString["Username"]) == true)
        //    {
        //        //strReturnStatus = "true";
        //        try
        //        {
        //            SqlConnection conn = new SqlConnection(connString);
        //            conn.Open();
        //            SqlDataReader myReader = null;
        //            SqlCommand myCommand = new SqlCommand(cmdText, conn);
        //            myReader = myCommand.ExecuteReader();
        //            while (myReader.Read())
        //            {
        //                Console.WriteLine(myReader["Name"].ToString());
        //                Console.WriteLine(myReader["JobTitle"].ToString());
        //                Repeater1.DataSource = myReader;
        //                Repeater1.DataBind();
        //                myReader.Close();
        //                conn.Close();
        //            }
        //        }
        //        catch (Exception ex)
        //        {
        //            Console.WriteLine(ex.ToString());
        //        }
        //    }


我在后面的代码中苦苦挣扎.即使检查用户名也不起作用,我也不知道为什么.另外,我不确定是否应该在< asp:Repeater>中放入任何代码.


I am struggling with the code-behind a lot. It did not work even for checking the username and I don''t know why. Also, I am not sure if I should put any piece of code inside <asp:Repeater> or not for showing the user information from the database.

推荐答案

您可以尝试完全不同的方法来解决您的问题,如以下文章中所述:
ASP.NET的JavaScript创建用户向导 [
You can a try a completely different approach for your problem as discussed in the below articles:
JavaScript Create User Wizard for ASP.NET[^]


Matrix,

中继器的结束标签在哪里?

您在何处放置了诸如标签之类的内容以将数据绑定到转发器中?

请检查google中绑定中继器的基本类型.
Hi Matrix,

Where is the end tag for repeater ?

Where you have placed anything like label to bind data in repeater ?

Please check the basic kind of binding repeater in google.


这篇关于如何自定义向导控件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆