这是formview中 的按钮,也绑定了数据源sqldatasource
     
      
 <asp:Button ID="btnemail" runat="server"  Text="Submit Without An Email" />
                                
  <asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Insert"
                                        Text="Submit" />button1已经实现了我要的功能。SqlDataSource1_Inserted我提交了数据库,并发出了邮件。
现在想btnemail按钮也可以直接将数据提交数据库,但是不发邮件了。
我只想到再写bunemail_click事件,再写方法把数据入库。
有没有也和button1一样的简单的方法。

解决方案 »

  1.   

    如果btnemail和Button1是在同一的<InsertItemTemplate>模板中,
    只要将btnemail的CommandName设置成insert就可以和Button1一样有保存到数据库的功能!
    即:
    <asp:Button ID="btnemail" runat="server"  Text="Submit Without An Email" CommandName="Insert" />
      

  2.   

    提交数据库的那部分代码抽离成一个方法,供两个事件调用private bool InsertDb(string Id)
    {
       
    }
    bunemail_click(sender object,EventAgs e)
    {
      InsertDb("1");}
    btn1_click(sender object,EvenAgs e)
    {
       if(InsertDb("1"))
       {
          SendEmail();
       }
    }
      

  3.   

    别用SqlDataSource1_Inserted这个方法写代码了,直接两个部分一个录入一个发送,其中一个执行一部分代码就行了
      

  4.   

    呵呵,这个问题,貌似。。
    LS的都正解,解决的方法很多,看女程序员MM怎么解决了
      

  5.   

    可是我还是不会。索性连代码贴了。
    btnemail和Button1是在同一的<InsertItemTemplate>模板中,
    后台代码:
     protected void CRMMessageDataSource_Inserted(object sender, SqlDataSourceStatusEventArgs e)
        {
            CRM_Phone_MessagesTableAdapter PM = new CRM_Phone_MessagesTableAdapter();
            int NewID = Convert.ToInt32(e.Command.Parameters["@NewID"].Value);
            DataTable dt = PM.GetDataByID(NewID);
            CRM.CRM_Phone_MessagesRow row = (CRM.CRM_Phone_MessagesRow)dt.Rows[0];
            string Message = "Contact Name:" + row.FirstName + " " + row.LastName + "<br/>";
     Message += "Message: " + row.Message;
            util.SendMail(Message, row.Services, "New Contact Lead", "[email protected]");
    邮件是这么发出去的。我写的那个btnemail就是不需要发的,可是无从下手了。 
      

  6.   

    你的代码不全,别人还是无从下手要不你就定义一个标志 ,在Button1和btnemail改变状态,满足条件的才调用SendMail这个方法。
      

  7.   

    已经全了。commandname=“insert”已经自动入库了。我在后台的方法就是发了个邮件。
    别的已经没有代码了。
      

  8.   

    button1和CRMMessageDataSource_Inserted是什么关系?
      

  9.   

    <asp:Button ID="btnemail" runat="server"  Text="Submit Without An Email" />
                                    
      <asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Insert"
                                            Text="Submit" />
    只是为了触发那个事件而已啊。<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CLIMS_CRMConnectionString1 %>"
                InsertCommand="INSERT INTO [CRM_Phone_Messages] ([FirstName], [LastName], [Institution], [State], [Phone], [PI_Name], [Email], [Message], [Services], [Entry_By], [Entry_Date], [Pricing_List], [Service_information], [Sequencing], [Plasmid], [PCR_Product], [Colony], [Phage], [Difficult_Template], [MB], [Cloning], [Fragment_Analysis], [Mutagenesis], [Plasmid_DNA_Prep], [Gene_Synthesis], [Other], [Others], [hear]) VALUES (@FirstName, @LastName, @Institution, @State, @Phone, @PI_Name, @Email, @Message, @Services, @Entry_By, @Entry_Date, @Pricing_List, @Service_information, @Sequencing, @Plasmid, @PCR_Product, @Colony, @Phage, @Difficult_Template, @MB, @Cloning, @Fragment_Analysis, @Mutagenesis, @Plasmid_DNA_Prep, @Gene_Synthesis, @Other, @Others, @hear);Select @NewID=Scope_Identity();"
                SelectCommand="SELECT * FROM [CRM_Phone_Messages]" OnInserted="SqlDataSource1_Inserted"
                DeleteCommand="DELETE FROM [CRM_Phone_Messages] WHERE [ID] = @ID" UpdateCommand="UPDATE [CRM_Phone_Messages] SET [FirstName] = @FirstName, [LastName] = @LastName, [Institution] = @Institution, [State] = @State, [Phone] = @Phone, [PI_Name] = @PI_Name, [Email] = @Email, [Message] = @Message, [Services] = @Services, [Entry_By] = @Entry_By, [Entry_Date] = @Entry_Date, [Pricing_List] = @Pricing_List, [Service_information] = @Service_information, [Sequencing] = @Sequencing, [Plasmid] = @Plasmid, [PCR_Product] = @PCR_Product, [Colony] = @Colony, [Phage] = @Phage, [Difficult_Template] = @Difficult_Template, [MB] = @MB, [Cloning] = @Cloning, [Fragment_Analysis] = @Fragment_Analysis, [Mutagenesis] = @Mutagenesis, [Plasmid_DNA_Prep] = @Plasmid_DNA_Prep, [Gene_Synthesis] = @Gene_Synthesis, [Other] = @Other, [Others] = @Others, [hear] = @hear WHERE [ID] = @ID">
      

  10.   

    没有用过SQLDATASOURCE  难道说CommandName="Insert" 这样写,就会进CRMMessageDataSource_Inserted这个事件啊。。?
      

  11.   

    btnemail加上CommandName="Insert"就会触发和Button1相同的时间哦!!<asp:Button ID="btnemail" runat="server" Text="Submit Without An Email" CommandName="Insert" />
      

  12.   

    是相同了。我的email怎么办?
      

  13.   

    楼主~我大概看明白了点。
    你把btnemail加上CommandName="Insert",CommandArgument=2. Button1加上CommandArgument=1
    然后把
    protected void CRMMessageDataSource_Inserted(object sender, SqlDataSourceStatusEventArgs e)
        {
         代码块A;  
        }这个事件中的代码块A剪贴出来,放到
    protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
        {
          if(e.CommandName.Equals("Insert")||e.CommandArgument.ToString().Equals("1")){
            代码块A; 
           }
        }应该就可以了
      

  14.   

    方法是好方法。  int NewID = Convert.ToInt32(e.Command.Parameters["@NewID"].Value);
    这个得不到值了。
      

  15.   

    设置个全局变量  bool isMail=false;
    protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
      {
      if(e.CommandName.Equals("Insert")||e.CommandArgument.ToString().Equals("1")){
      isMail=true; 
      }
      }
    然后
    protected void CRMMessageDataSource_Inserted(object sender, SqlDataSourceStatusEventArgs e)
      {
    if(isMail){
      代码块A;   
    }
      }这样试下。。
      

  16.   

    总不太清楚楼主的问题所在!!
    btnemail加上CommandName="Insert"后,
    可以触发ItemCommand,Inserting和Inserted事件,
    你的mail代码就可以放在该事件中,
    你的mail希望在什么事件下执行,还需要什么数据,请明示!!
      

  17.   

    20楼果然厉害。&& Thank you very much.
      

  18.   


    那啥,过奖了。。
    我从看到你这问题研究一下午了,话说我刚毕业来着。
    以前从来没用过SQLDATASOURCE的。。(自恋ING。。)
      

  19.   

    跟我说的不是一个意思吗?要不你就定义一个标志 ,在Button1和btnemail改变状态,满足条件的才调用SendMail这个方法。
      

  20.   

    问题是我卡在这个条件上了。所以转了一圈没转出来。
    那还要有这个值呢。 int NewID = Convert.ToInt32(e.Command.Parameters["@NewID"].Value);
      

  21.   

    int NewID = Convert.ToInt32(e.Command.Parameters["@NewID"].Value);
    这个得不到值了。之前可以得到值?
      

  22.   

    恩。(object sender, SqlDataSourceStatusEventArgs e)
       (object sender, FormViewCommandEventArgs e)水区我发帖子了。你去下。
      

  23.   

    FormViewCommandEventArgs eSqlDataSourceStatusEventArgs e这两个是不同的,你不能用第二个e在FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)里用
      

  24.   

    int NewID = Convert.ToInt32(e.Command.Parameters["@NewID"].Value);你想在哪个事件里调用?有什么用?