2016-11-29 95 views
0

兩個不同的文本框的值和商店,我有40個文本框代碼如下如何獲得數據庫

<asp:textbox ID="txtemail" runat="server" Cssclass="form-control"> 
<asp:textbox ID="txtname" runat="server" Cssclass="name"> 
<asp:textbox ID="txtemail2" runat="server" Cssclass="form-control"> 
<asp:textbox ID="txtname2" runat ="server" Cssclass="name"> 

像我有電子郵件40文本框20和20 name.I需要將這些值存儲到數據庫我使用下面的代碼

foreach (var textbox in panelemail.Controls.OfType<TextBox>()) 
    { 
     string emailtxt = textbox.Text; 
     BAL_F2290 objbalemail = new BAL_F2290(); 
     Form2290.Form objemail = new Form2290.Form(); 
     objemail.UserID = Convert.ToString(Session["USER_KEY"]); 
     objemail.Email = txtemail.text; 
     objemail.name = txtname.text; 
     string res = objbalemail.Referral_Email_BAL(objemail); 
    } 

我的問題只有一個值可以通過電子郵件或名稱,但我需要在時間通過兩個值。如何在一個循環中傳遞兩個值。

+0

你有沒有使用自定義控件? – McNets

+0

不,這是我第一次工作........... –

+0

你可以在裏面定義一個帶有兩個控件的用戶控件:name和mail,然後當你得到Controls.OfType 的列表時,您可以輕鬆訪問這兩個字段。 – McNets

回答

0

完整的解決方案是更改您的視圖模型以獲得名稱和電子郵件文本框的邏輯組。如果你需要一個快速修復分組中的一個枚舉每兩個連續元素,請看下面的代碼:

var elements = Enumerable.Range(1, 10); 

System.Diagnostics.Debug.Assert(elements.Count() % 2 == 0); 
var oddElements = elements.Where((elem, index) => index % 2 == 0); 
var evenElements = elements.Where((elem, index) => index % 2 == 1); 
var pairs = oddElements.Zip(evenElements, (first, second) => new { first, second }); 

foreach (var item in pairs) 
{ 
    DoSomething(item.first, item.second); 
} 

您將要替換爲任何你計劃使用的名字做elements您控制的收集和DoSomething用你的邏輯和電子郵件。

0

首先重命名初始文本框命名這樣

<asp:textbox ID="txtemail1" runat="server" Cssclass="form-control"> 
        ----^ 
<asp:textbox ID="txtname1" runat="server" Cssclass="name"> 
        ----^ 

像明智的其他文本框做的一樣好。 然後執行迭代操作,以找到panelemail控件中的控件,如下所述。

for(int i=1;i <= 20;i++) 
{ 
    //Find the control using ID of Textbox and value of i 
    TextBox emailTxt = panelemail.FindControl("txtemail"+i) AS TextBox; 
    TextBox nameTxt = panelemail.FindControl("txtname"+i) AS TextBox; 

    string emailValue = String.Empty; 
    if(emailTxt !=null) 
    emailValue = emailTxt.Text; 

    string nameValue = String.Empty; 
    if(nameTxt !=null) 
    nameValue = nameTxt.Text; 

    BAL_F2290 objbalemail = new BAL_F2290(); 
    Form2290.Form objemail = new Form2290.Form(); 
    objemail.UserID = Convert.ToString(Session["USER_KEY"]); 
    objemail.Email = emailValue; 
    objemail.name = nameValue ; 
    string res = objbalemail.Referral_Email_BAL(objemail); 
} 
+0

感謝您給出答案.....但我們應該避免20次調用數據庫。我們只需要一次調用數據庫。 –