【问题标题】:Insert in database, based on dropdownlist根据下拉列表插入数据库
【发布时间】:2017-07-13 08:53:29
【问题描述】:

我正在构建一个简单的表单来从数据库表中添加和删除用户。删除用户部分有一个下拉列表控件,可以在每次更改数据库后刷新。我设法进行此刷新的唯一方法是在每次更改后刷新页面。我现在有一个非常简单的问题:我希望在每个操作之后通过一个简单的标签显示一条消息。但是现在我添加了页面刷新,它不再显示,即使有线程睡眠语句。我怎么能那样做?

在下面查看我的 C# 代码

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {

        string CS = ConfigurationManager.ConnectionStrings["EP_PLANNING_NEW"].ConnectionString;
        SqlConnection con = new SqlConnection(CS);
        {
            using (SqlCommand cmd = new SqlCommand("SELECT [ID],[First Name] + ' ' + [Last Name] AS [Full Name] FROM [dbo].[team_members]"))
            {

                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;

                try
                {
                    con.Open();
                    RemUserList.DataSource = cmd.ExecuteReader();
                    RemUserList.DataTextField = "Full Name";
                    RemUserList.DataValueField = "ID";
                    RemUserList.DataBind();
                }

                catch (Exception ex)
                {
                    throw ex;
                }

                finally
                {
                    con.Close();
                    con.Dispose();
                }

            }
        }

        RemUserList.Items.Insert(0, new ListItem("- Select Team Member to remove -", "0"));
    }

}

protected void RemUserList_SelectedIndexChanged(object sender, EventArgs e)
{

}

protected void AddUserButton_Click(object sender, EventArgs e)
{
    string CS = ConfigurationManager.ConnectionStrings["EP_PLANNING_NEW"].ConnectionString;
    SqlConnection con = new SqlConnection(CS);
    {
        SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[team_members] ([First Name],[Last Name]) VALUES (@FirstName,@LastName)", con);
        cmd.Parameters.AddWithValue("@FirstName", AddUserFirstName.Text);
        cmd.Parameters.AddWithValue("@LastName", AddUserLastName.Text);

        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }

        catch (Exception ex)
        {
            throw ex;
        }

        finally
        {
            con.Close();
            con.Dispose();
        }

        if (IsPostBack)
        {
            MsgLbl.Text = "** User Successfully Added **";
            //System.Threading.Thread.Sleep(2000);
            Response.Redirect(Request.RawUrl);
            AddUserFirstName.Text = "";
            AddUserLastName.Text = "";
        }
    }
}

protected void RemUserButton_Click(object sender, EventArgs e)
{
    string CS = ConfigurationManager.ConnectionStrings["EP_PLANNING_NEW"].ConnectionString;
    SqlConnection con = new SqlConnection(CS);
    {
        SqlCommand cmd = new SqlCommand("DELETE FROM [dbo].[team_members] WHERE [ID] = @ID", con);
        cmd.Parameters.AddWithValue("@ID", RemUserList.SelectedValue);

        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }

        catch (Exception ex)
        {
            throw ex;
        }

        finally
        {
            con.Close();
            con.Dispose();
        }

    }

    if (IsPostBack)
    {
        MsgLbl.Text = "** User Successfully Removed **";
        //System.Threading.Thread.Sleep(2000);
        Response.Redirect(Request.RawUrl);
    }
}

【问题讨论】:

  • 尽量让问题简短:我们是否需要同时看到 Add 和 Rem 按钮?还是所有的using ...;s ?
  • Thread.Sleep() 很傻,请务必了解 Web 编程的客户端/服务器特性。
  • 只是猜测,但我认为您的问题是 Redirect()。这与同一调用中 Label.Text 等的任何设置相矛盾。
  • 下次会尽量听从你的“好心”建议:-)祝你有美好的一天!

标签: c# asp.net sql-server webforms


【解决方案1】:

你不应该重定向到刷新下拉菜单,试试下面的代码

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

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            BindRemUserList();
        }
    }

    protected void BindRemUserList()
    {
        string CS = ConfigurationManager.ConnectionStrings["EP_PLANNING_NEW"].ConnectionString;
        using(SqlConnection con = new SqlConnection(CS))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT [ID],[First Name] + ' ' + [Last Name] AS [Full Name] FROM [dbo].[team_members]"))
            {

                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;

                try
                {
                    con.Open();
                    RemUserList.DataSource = cmd.ExecuteReader();
                    RemUserList.DataTextField = "Full Name";
                    RemUserList.DataValueField = "ID";
                    RemUserList.DataBind();
                }

                catch (Exception ex)
                {
                    throw ex;
                }

                finally
                {
                    con.Close();
                    con.Dispose();
                }

            }
        }

        RemUserList.Items.Insert(0, new ListItem("- Select Team Member to remove -", "0"));
    }

    protected void RemUserList_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    protected void AddUserButton_Click(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["EP_PLANNING_NEW"].ConnectionString;
        using(SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[team_members] ([First Name],[Last Name]) VALUES (@FirstName,@LastName)", con);
            cmd.Parameters.AddWithValue("@FirstName", AddUserFirstName.Text);
            cmd.Parameters.AddWithValue("@LastName", AddUserLastName.Text);

            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
            }

            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                con.Close();
                con.Dispose();
            }
            MsgLbl.Text = "** User Successfully Added **";
            AddUserFirstName.Text = "";
            AddUserLastName.Text = "";
            BindRemUserList();
        }
    }

    protected void RemUserButton_Click(object sender, EventArgs e)
    {
        string CS = ConfigurationManager.ConnectionStrings["EP_PLANNING_NEW"].ConnectionString;
        using(SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("DELETE FROM [dbo].[team_members] WHERE [ID] = @ID", con);
            cmd.Parameters.AddWithValue("@ID", RemUserList.SelectedValue);
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        MsgLbl.Text = "** User Successfully Removed **";
        BindRemUserList();
    }
}

【讨论】:

  • 工作就像一个魅力!非常感谢:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
相关资源
最近更新 更多