2010-11-08 143 views
0

我在我的數據輸入頁面有兩個問題:probml 1)雖然我正在做客戶端驗證,爲什麼指針會在頁面後面編碼..我有一個名爲amount的文本字段,如果該字段是空我是一個警報消息,並專注於該領域。但是在頁面後面自動控制代碼: decimal amount = Convert.ToDecimal(txtAmount.Text);這裏我得到了「當我輸入重複值時,我在等待「This id already exists,please try with another id」這樣的消息,但我得到的是像主鍵衝突那樣的excetpion .........這是代碼..在javascript中需要幫助

 if (!Page.IsValid) 
      return; 
     int sum = 0; 
     ContactPersonBO contactpersonbo = new ContactPersonBO(); 
     string personid = txtPersonid.Text; 
     decimal amount = Convert.ToDecimal(txtAmount.Text); 
     try 
     { 

      contactpersonbo.PersonID = personid;    
      contactpersonbo.Amount = amount;   

      sum = ontactpersonbo.InsertPerson(); 
      if (sum > 0) 
      { 
       lblMessage.Text = "person has been succesfully added.」;    

      } 
      else 
      { 

       lblMessage.Text = "This person already exists, please try with otherid」; 
      } 

     } 
     catch (Exception ex) 
     { 
      lblMessage.Text = ex.Message.ToString(); 
     } 

注意:在這裏控制是從來沒有來到這個部分:

else 
    { 

     lblMessage.Text = "This person already exists, please try with otherid」; 
    } 

回答

1

關於你的第一個問題,你應該爲了防止默認處理髮生和頁面從onclick的處理器返回false提交:

<asp:Button ID="btnSave" runat="server" Text="Save" Width="64px" 
    Font-Bold="true" OnClientClick="return validate()" onclick="btnSave_Click" /> 

關於你的第二個問題,它看起來如果您的InsertPerson()方法正在拋出異常,而不是返回0(如果此人已經存在)。從您在下面發佈的代碼中,似乎該方法不會對新人員的存在進行任何檢查。您可能想要使用例如一個select查詢。

+0

你好這裏是personBO類方法的標識: – sunit 2010-11-08 16:39:58

+0

公衆詮釋InsertPerson(){ PersonDAL人=新PersonDAL(); return person.InsertPerson(this); } – sunit 2010-11-08 16:40:21

+0

並從DAL層方法返回:return oCommand.ExecuteNonQuery(); – sunit 2010-11-08 16:45:20

0

可能的txtAmound不支持可解析的sring(它可能是空的,或者小數分隔符不會保留在您正在使用的設置中) 您可以使用Decimal.TryParse來代替.bear記住它只是沒有'牛逼引發異常,如果字符串不是在第二種情況下正確的格式

http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx

我不知道你DAL(數據訪問層),但我能猜到一個表/對象,你正在嘗試插入這個人有一個主鍵約束。 也許你正在使用已被保存