使用asp:FormView  数据源为 sqldataSource,在插入新数据有时点一下按钮不好使,数据插不进去,有时点一下又好使,不知咋回事?
另外在多人同时插入数据时,发现数据串了,就是我插的数据关联到你的数据上去了?,这也许是并发问题吧
求解

解决方案 »

  1.   

    <asp:FormView ID="FormViewdetail" DataKeyNames="IXH" DataSourceID="SqlDataSource1" runat="server" HeaderText="委托单详细信息:" Width="100%"   OnDataBound="FormViewdetail_DataBound"      >
                 <EditItemTemplate>

    </EmptyDataTemplate>
               </asp:FormView>
               <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:connstring %>"
                    
                    
                    InsertCommand="INSERT INTO [TJSCL001] ([CWTDBH], [VKHBH], [VWTR], [VWTRDH], [DWTRQ], [CJSR],[VJSRDH],  [CSJHXC], [CKHSFGZ], [CLX],[CKS], [NHJ]) VALUES (@CWTDBH, @VKHBH, @VWTR, @VWTRDH, @DWTRQ ,cast(@CJSR as char), @VJSRDH, cast(@CSJHXC as char), cast(@CKHSFGZ as char), cast(@CLX as char),@CKS, cast(@NHJ as numeric(10,2)))" 
                    UpdateCommand="UPDATE [TJSCL001] SET [CWTDBH] = @CWTDBH, [VKHBH] = @VKHBH, [VWTR] = @VWTR, [VWTRDH] = @VWTRDH, [DWTRQ] = @DWTRQ, [CJSR] = cast(@CJSR as char),[VJSRDH] = @VJSRDH, [CSJHXC] = cast(@CSJHXC as char), [CKHSFGZ] = cast(@CKHSFGZ as char), [CLX] = cast(@CLX as char),[CKS] = @CKS, [NHJ] = cast(@NHJ as numeric(10,2)) WHERE [IXH] = @IXH">
                    
                    <UpdateParameters>
                        <asp:Parameter Name="CWTDBH" Type="String" />
                        <asp:Parameter Name="VKHBH" Type="String" />
                        <asp:Parameter Name="VWTR" Type="String" />
                        <asp:Parameter Name="VWTRDH" Type="String" />
                        <asp:Parameter Name="DWTRQ" Type="String" />
                        <asp:Parameter Name="CJSR" Type="String" />
                        <asp:Parameter Name="VJSRDH" Type="String" />
                        
                        <asp:Parameter Name="CSJHXC" Type="String" />
                        <asp:Parameter Name="CKHSFGZ" Type="String" />
                        <asp:Parameter Name="CLX" Type="String" />
                        <asp:Parameter Name="CKS" Type="String" />
                        <asp:Parameter Name="NHJ" Type="String" />
                        <asp:Parameter Name="IXH" Type="Int32" />
                    </UpdateParameters>
                    <InsertParameters>
                        <asp:Parameter Name="CWTDBH" Type="String" />
                        <asp:Parameter Name="VKHBH" Type="String" />
                        <asp:Parameter Name="VWTR" Type="String" />
                        <asp:Parameter Name="VWTRDH" Type="String" />
                        <asp:Parameter Name="DWTRQ" Type="String" />
                        <asp:Parameter Name="CJSR" Type="String" />
                        <asp:Parameter Name="VJSRDH" Type="String" />
                        
                        <asp:Parameter Name="CSJHXC" Type="String" />
                        <asp:Parameter Name="CKHSFGZ" Type="String" />
                        <asp:Parameter Name="CLX" Type="String" />
                        <asp:Parameter Name="CKS" Type="String" />
                        <asp:Parameter Name="NHJ" Type="String" />
                    </InsertParameters>
                   
                    
                </asp:SqlDataSource>
      

  2.   

    cs文件:
     protected void insertdata_click(object sender, EventArgs e)
        {
            try
            {
                string CWTDBH = "";
                string VKHBH = "";
                string VKHMC = "";
                string VWTR = "";
                string VWTRDH = "";
                string DWTRQ = "";
                string CJSR = "";
                string VJSRDH = "";
                
                string CSJHXC = "";
                string CKHSFGZ = "";
                string CLX = "";
                string CKS = "";
                string NHJ = "";
                string js;
                bool bl = true;
                string connStr = ConfigurationManager.ConnectionStrings[connstring].ConnectionString;
                if (((TextBox)FormViewdetail.FindControl("CWTDBHTextBox")) != null)
                {
                     CWTDBH = ((TextBox)FormViewdetail.FindControl("CWTDBHTextBox")).Text;
                    //Response.Write(CWTDBH);
                }
                if (((HiddenField)FormViewdetail.FindControl("VKHBHhf")) != null)
                {
                     VKHBH = ((HiddenField)FormViewdetail.FindControl("VKHBHhf")).Value;
                    //Response.Write(VKHBH);
                }
                if (((TextBox)FormViewdetail.FindControl("VKHBHTextBox")) != null)
                {
                     VKHMC = ((TextBox)FormViewdetail.FindControl("VKHBHTextBox")).Text;
                    //Response.Write(VKHMC);
                }
                if (((TextBox)FormViewdetail.FindControl("VWTRTextBox")) != null)
                {
                     VWTR = ((TextBox)FormViewdetail.FindControl("VWTRTextBox")).Text;
                    //Response.Write(VWTR);
                }
                if (((TextBox)FormViewdetail.FindControl("VWTRDHTextBox")) != null)
                {
                     VWTRDH = ((TextBox)FormViewdetail.FindControl("VWTRDHTextBox")).Text;
                    //Response.Write(VWTRDH);
                }
                if (((TextBox)FormViewdetail.FindControl("DWTRQTextBox")) != null)
                {
                     DWTRQ = ((TextBox)FormViewdetail.FindControl("DWTRQTextBox")).Text;
                    //Response.Write(DWTRQ);
                }
                if (((HiddenField)FormViewdetail.FindControl("HFCJSR")) != null)
                {
                    CJSR = ((HiddenField)FormViewdetail.FindControl("HFCJSR")).Value;
                    //Response.Write(CJSR);
                }            if (((TextBox)FormViewdetail.FindControl("VJSRDHTextBox")) != null)
                {
                     VJSRDH = ((TextBox)FormViewdetail.FindControl("VJSRDHTextBox")).Text;
                    //Response.Write(VJSRDH);
                }
               
                if (((DropDownList)FormViewdetail.FindControl("DDLCSJHXC")) != null)
                {
                     CSJHXC = ((DropDownList)FormViewdetail.FindControl("DDLCSJHXC")).SelectedValue;
                   // Response.Write(CSJHXC);
                }
                if (((DropDownList)FormViewdetail.FindControl("DDLCKHSFGZ")) != null)
                {
                     CKHSFGZ = ((DropDownList)FormViewdetail.FindControl("DDLCKHSFGZ")).SelectedValue;
                    //Response.Write(CKHSFGZ);
                }
                if (((DropDownList)FormViewdetail.FindControl("DDLCLX")) != null)
                {
                     CLX = ((DropDownList)FormViewdetail.FindControl("DDLCLX")).SelectedValue;
                    //Response.Write(CLX);
                }
                if (((DropDownList)FormViewdetail.FindControl("DDLks")) != null)
                {
                    CKS = ((DropDownList)FormViewdetail.FindControl("DDLks")).SelectedValue;
                    //Response.Write(CKS);
                }
                if (((TextBox)FormViewdetail.FindControl("NHJTextBox")) != null)
                {
                     NHJ = ((TextBox)FormViewdetail.FindControl("NHJTextBox")).Text;
                    //Response.Write(NHJ);
                }
                if (CWTDBH.Equals(""))
                {
                    js = "<script language=javascript> alert(\"请输入委托单编号!\");</script>";
                    Page.RegisterStartupScript("Setfirstfocus", js);
                    FormViewdetail.DefaultMode = FormViewMode.Insert;
                    bl = false;
                    return;
                }
                else
                {
                    string SqlStr = "SELECT a.IXH FROM TJSCL001 a where a.CWTDBH='" + CWTDBH + "'";
                    SqlConnection conn = new SqlConnection(connStr);
                    //if (conn.State.ToString() == "Closed") conn.Open();
                    //创建一个SqlCommand
                    SqlCommand myCommand = new SqlCommand(SqlStr, conn);                myCommand.Connection.Open();                SqlDataReader myReader = myCommand.ExecuteReader();
                    while (myReader.HasRows)
                    {
                        js = "<script language=javascript> alert(\"该委托单编号已存在!\");</script>";
                        Page.RegisterStartupScript("Setfirstfocus", js);
                        myCommand.Connection.Close();
                        return;                }
                    myCommand.Connection.Close();
                }
               
                
                
                
                if (CJSR.Equals(""))
                {
                    js = "<script language=javascript> alert(\"请选择接受人!\");</script>";
                    Page.RegisterStartupScript("Setfirstfocus", js);
                    FormViewdetail.DefaultMode = FormViewMode.Insert;
                    bl = false;
                    return;
                }
               
                
                if (!NHJ.Equals(""))
                {
                    Match m = Regex.Match(NHJ, @"^\d+(\.\d{1,2})?$");
                    if (m.Success)
                    { }
                    else
                    {
                        js = "<script language=javascript > {alert(\"请您输入合计数,格式为###.00!\");}</script>";
                        Page.RegisterStartupScript("Setfirstfocus", js);
                        FormViewdetail.DefaultMode = FormViewMode.Edit;
                        bl = false;
                        return;
                    }
                }
                else { NHJ = "0"; }
                if (bl)
                {                //Convert.ToDecimal(NHJ);
                    SqlDataSource1.InsertParameters[0].DefaultValue = CWTDBH;
                    SqlDataSource1.InsertParameters[1].DefaultValue = VKHBH;
                    SqlDataSource1.InsertParameters[2].DefaultValue = VWTR;
                    SqlDataSource1.InsertParameters[3].DefaultValue = VWTRDH;
                    SqlDataSource1.InsertParameters[4].DefaultValue = DWTRQ.ToString();
                    SqlDataSource1.InsertParameters[5].DefaultValue = CJSR;
                    SqlDataSource1.InsertParameters[6].DefaultValue = VJSRDH;
                    
                    SqlDataSource1.InsertParameters[7].DefaultValue = CSJHXC;
                    SqlDataSource1.InsertParameters[8].DefaultValue = CKHSFGZ;
                    SqlDataSource1.InsertParameters[9].DefaultValue = CLX;
                    SqlDataSource1.InsertParameters[10].DefaultValue = CKS;
                    SqlDataSource1.InsertParameters[11].DefaultValue = NHJ;                SqlDataSource1.Insert();
                }            GridViewBind();
                FormViewdetail.ChangeMode(FormViewMode.ReadOnly);
                formviewbind();
            }
            catch (Exception ex)
            {
            }    } protected void InsertCancelButton_click(object sender, EventArgs e)
        {
            FormViewdetail.ChangeMode(FormViewMode.ReadOnly);
            formviewbind();
        }
      

  3.   

    可能这里myReader没有关闭造成的,多次操作后没有关闭 
        SqlDataReader myReader = myCommand.ExecuteReader();
                    while (myReader.HasRows)
                    {
                        js = "<script language=javascript> alert(\"该委托单编号已存在!\");</script>";
                        Page.RegisterStartupScript("Setfirstfocus", js);
                        myCommand.Connection.Close();
                        return;                }
                  myReader.close();//增加这个,反正有SqlDataReader 地方一定要关闭呀
                    myCommand.Connection.Close();
      

  4.   

    因为你没有关掉Read,关掉之后先试试能不能解决,点俩次才插入,可能一次已经正在操作比较慢吧,
      

  5.   

    GridViewBind是否重新查询了数据?