none
如何用C#创建Button并使其对鼠标单击作出响应 RRS feed

  • 问题

  • 以下代码想通过后台创建三个控件:一个文本框、一个下拉列表、一个按钮,当鼠标单击按钮时,文本框和下拉列表的内容保存到数据库中。可是,内容似乎未保存到数据库中,按钮似乎未起作用,

    不如为何,请各位高手指教!

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

            string varFromTextbox,varFromDropdownlist,varTableName;

            protected void Page_Load(object sender, EventArgs e)
            {
                            base.OnInit(e);
               
                            //动态创建文本框,用于填入电话号码
                            TextBox ttbNewTel01 = new TextBox();
                            this.Form.Controls.Add(ttbNewTel01);
                            varFromTextbox = ttbNewTel01.Text;

                            //动态创建下拉列表,用于选择电话号码的类别,如:工作电话、移动电话、传真等
                            DropDownList dropNewTelClass01=new DropDownList();
                            this.Form.Controls.Add(dropNewTelClass01);
                            OleDbCommand commDbabTelClass = new OleDbCommand(strSqlTelClass, connDbab);

                            OleDbDataReader dataReader = commDbabTelClass.ExecuteReader();
                            string varTelClass = "";
                            while (dataReader.Read())
                            {
                                varTelClass = (string)dataReader[0];
                                dropNewTelClass01.Items.Add(varTelClass);
                            }
                            varFromDropdownlist = dropNewTelClass01.SelectedIndex.ToString();

                            //动态创建按钮,用于将电话号码及类别插入数据库中
                            Button btnNewTelOK01 = new Button();
                            btnNewTelOK01.Text = "保存";
                            this.Form.Controls.Add(btnNewTelOK01);
             }


            protected void btnNewTelOK01(object sender, EventArgs e)
            {
                string strConn = "Provider=Microsoft.Jet.OleDb.4.0;";  //连接数据库字符串
                strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";

                OleDbConnection connDbab = new OleDbConnection(strConn);  //连接数据库
                connDbab.Open();
                string strSqlIns = "INSERT INTO  " + varTableName + "(TelNum,TelClass) VALUES('" + varFromTextbox + "','" + varFromDropdownlist + "')";
                OleDbCommand commDbabTelNumTable = new OleDbCommand(strSqlIns, connDbab);
                commDbabTelNumTable.ExecuteNonQuery();
                connDbab.Close();
            }
        }

     

    2011年8月14日 8:06

答案

  • dear

    1.请先确认按下按钮后能正确的触发事件,在btnNewTelOK01方法里设中断点看看,若无法进入中段点,你应该加入Click事件

    Button btnNewTelOK01 = new Button();
    btnNewTelOK01.Text = "保存";
    btnNewTelOK01.Click += new EventHandler(btnNewTelOK01_Click);
    this.Controls.Add(btnNewTelOK01);
    
    void btnNewTelOK01_Click(object sender, EventArgs e)
    {
    string strConn = "Provider=Microsoft.Jet.OleDb.4.0;"; //连接数据库字符串
    strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";
    
    OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
    connDbab.Open();
    string strSqlIns = "INSERT INTO " + varTableName + "(TelNum,TelClass) VALUES('" + varFromTextbox + "','" + varFromDropdownlist + "')";
    OleDbCommand commDbabTelNumTable = new OleDbCommand(strSqlIns, connDbab);
    commDbabTelNumTable.ExecuteNonQuery();
    connDbab.Close();
    }
    



    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月14日 8:45
  • 你好,我想应该是你只是在后台加上了以上代码,而忘记了在Button btnNewTelOK01 的属性上写上Click事件吧 如果是这样的话,请在btnNewTelOK01 的属性里将Click事件的值设置为btnNewTelOK01_Click 然后保存,再run一下,看看有没有问题。

     

    谢谢你的支持。

     


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年8月18日 5:41
    版主

全部回复

  • dear

    1.请先确认按下按钮后能正确的触发事件,在btnNewTelOK01方法里设中断点看看,若无法进入中段点,你应该加入Click事件

    Button btnNewTelOK01 = new Button();
    btnNewTelOK01.Text = "保存";
    btnNewTelOK01.Click += new EventHandler(btnNewTelOK01_Click);
    this.Controls.Add(btnNewTelOK01);
    
    void btnNewTelOK01_Click(object sender, EventArgs e)
    {
    string strConn = "Provider=Microsoft.Jet.OleDb.4.0;"; //连接数据库字符串
    strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";
    
    OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
    connDbab.Open();
    string strSqlIns = "INSERT INTO " + varTableName + "(TelNum,TelClass) VALUES('" + varFromTextbox + "','" + varFromDropdownlist + "')";
    OleDbCommand commDbabTelNumTable = new OleDbCommand(strSqlIns, connDbab);
    commDbabTelNumTable.ExecuteNonQuery();
    connDbab.Close();
    }
    



    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月14日 8:45
  • 谢谢你的回复,按照你的方法,加了一句“btnNewTelOK01.Click += new EventHandler(btnNewTelOK01_Click);”

    我试了,出现错误信息:当前上下文中不存在名称“btnNewTelOK01_Click“

    请老师指明方向。

    2011年8月14日 13:06
  • =.=!!

    不是已经贴给您了吗

    btnNewTelOK01.Click += new EventHandler(btnNewTelOK01_Click);
    void btnNewTelOK01_Click(object sender, EventArgs e)
    {
    string strConn = "Provider=Microsoft.Jet.OleDb.4.0;"; //连接数据库字符串
    strConn += @"Data source=C:\ChhAtWin\web\AddressBook\AddressBook\App_Data\AddressBookDB.mdb";
    
    OleDbConnection connDbab = new OleDbConnection(strConn); //连接数据库
    connDbab.Open();
    string strSqlIns = "INSERT INTO " + varTableName + "(TelNum,TelClass) VALUES('" + varFromTextbox + "','" + varFromDropdownlist + "')";
    OleDbCommand commDbabTelNumTable = new OleDbCommand(strSqlIns, connDbab);
    commDbabTelNumTable.ExecuteNonQuery();
    connDbab.Close();
    }
    

    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年8月14日 17:16
  • 噢,是我自己粗心,应该将“void btnNewTelOK01(object sender, EventArgs e)”改为“void btnNewTelOK01_Click(object sender, EventArgs e)”,开始我没有添加“_Click”。

    运行已经通过,没有错误信息了,但是,在单击btnNewTelOK01按钮后,似乎btnNewTelOK01_Click方法仍然没有运行,

    请老师指教

    2011年8月15日 1:02
  • 你好,我想应该是你只是在后台加上了以上代码,而忘记了在Button btnNewTelOK01 的属性上写上Click事件吧 如果是这样的话,请在btnNewTelOK01 的属性里将Click事件的值设置为btnNewTelOK01_Click 然后保存,再run一下,看看有没有问题。

     

    谢谢你的支持。

     


    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年8月18日 5:41
    版主