2016-11-29 98 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次调用数据库。我们只需要一次调用数据库。 –