【问题标题】:Get text from Label inside an Item template从 Item 模板中的 Label 获取文本
【发布时间】:2017-03-23 12:57:51
【问题描述】:

我目前正在从数据库中提取信息,并且有 2 个标签显示了正确的信息。但是我想在后面的代码中使用这些标签,但它们没有显示给我。我在后面的代码中需要这个的原因是我可以将电子邮件地址插入收件人电子邮件。

下面是显示Item模板和SQL数据源的前端

<asp:SqlDataSource ID="userCourse" runat="server" ConnectionString='<%$ ConnectionStrings:ConnectionString %>' SelectCommand="SELECT DISTINCT tblCourse.courseTitle, tblCourse.advisorOfStudiesID, tblPersonalInfo.firstName, tblPersonalInfo.lastName, tblPersonalInfo.email FROM tblCourse INNER JOIN tblAdvisorOfStudies ON tblCourse.advisorOfStudiesID = tblAdvisorOfStudies.advisorOfStudiesID INNER JOIN tblUsers ON tblAdvisorOfStudies.userID = tblUsers.userID INNER JOIN tblPersonalInfo ON tblUsers.personalInfoID = tblPersonalInfo.personalInfoID WHERE (tblCourse.courseID = @userID)">
    <SelectParameters>
        <asp:SessionParameter SessionField="userID" Name="userID"></asp:SessionParameter>
    </SelectParameters>
</asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataSourceID="userCourse">
    <ItemTemplate>
        <asp:Label ID="aosemail" runat="server" Text='<%# Eval("email") %>' />
        <asp:Label ID="aosname" hidden runat="server" Text='<%# Eval("firstName") %>' />
    </ItemTemplate>
</asp:ListView>    

下面是我想要获取标签文本的背后代码

private bool SendEmail()
{
    string recipient = aosemail; //AOS Email textbox should go here
    MailMessage mm = new MailMessage("CSC3047@gmail.com", recipient);
    mm.Subject = "Student has chosen Manual Enrollment Process!";
    //AOS name textbox will be here
    mm.Body = "Hi "   + aosename+ "<br><br>This is a quick email to inform you that " + Name.Text.ToString() + " has chosen the manual enrollment process. The reason we are emailing you is that you are their Advisor of Studies. Please email the user on " + Email.Text.ToString() + " <br><br>Regards";
    mm.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.EnableSsl = true;
    NetworkCredential NetworkCred = new NetworkCredential();
    NetworkCred.UserName = "*************";
    NetworkCred.Password = "*********";
    smtp.UseDefaultCredentials = true;
    smtp.Credentials = NetworkCred;
    smtp.Port = 587;
    smtp.Send(mm);
    return true;
} 

提前致谢

【问题讨论】:

  • “代码背后的标签”是什么意思?
  • string recipient = aosemail; 你在用aosemail.Text吗?
  • @TamasRev 所以标签在前端 .aspx 我希望能够在后面的代码中获取标签的文本,但我无法在 .aspx.cs 文件中调用它作为它在项目模板中
  • @Nathangrad 不能像在项目模板中那样被调用

标签: c# asp.net


【解决方案1】:

您需要使用FindContol 来搜索ListView 中的Label。而且由于可能不止一个,因此您必须使用索引,就像数组一样。

int index = 0;

Label aosemail = ListView1.Items[index].FindControl("aosemail") as Label;
Label aosname = ListView1.Items[index].FindControl("aosname") as Label;

string body = "Hi " + aosname.Text + "<br><br>" + aosemail.Text;

【讨论】:

  • 谢谢!!昨晚我被困在这个问题上大约 4 个小时。
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2018-09-06
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
相关资源
最近更新 更多