我正在使用Gridview来处理我的结果vía复选框并计划将其显示在ModalPopUp的textField中。 首先要做的事情。我想处理它,不知何故,当我使用TemplateField时,我在警报中看不到任何结果。但是当我尝试使用BoundField时,结果确实显示出来。我不知道是不是因为我只能展示一个boundField或者我做错了什么。这是我正在使用的特定部分的代码部分。每次我使用TemplateField都不行:(
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="selectedMail" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True"
SortExpression="Id" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Top" />
<asp:TemplateField HeaderText="Complete Name" SortExpression="FirstName">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" VerticalAlign="Top" />
<ItemTemplate>
<a href='candidato.aspx?key=<%#Eval("Key")%>'>
<%# Eval("FirstName") %>
<%# Eval("MiddleName") %>
<%# Eval("LastName") %>
<%# Eval("SecondLastName") %></a>
<br />
<small><%# GetLabels(Eval("Id").ToString())%></small>
</ItemTemplate>
<FooterTemplate>
Total candidates: <asp:Label ID="lblTotalApplicants" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Vacancies" SortExpression="">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
<ItemTemplate>
<%# GetVacante(Eval("email").ToString())%>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Status.Nombre" HeaderText="Status"
SortExpression="Status.Nombre" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Top" />
<asp:TemplateField HeaderText="Created Date" SortExpression="CreatedDate">
<HeaderStyle HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" VerticalAlign="Top" />
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("createdDate", "{0:MMMM dd, yyyy. H:mm}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Rating" HeaderText="Rating" SortExpression="Rating" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" ItemStyle-VerticalAlign="Top" />
<asp:TemplateField HeaderText="Email" SortExpression="" runat="server">
<ItemTemplate>
<%# Eval("email")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
asp.cs这里是它的后端。
public void loadEmail(object sender, EventArgs e)
{
String compEmail = "";
foreach (GridViewRow row in gvApplicants.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox selectedMail = (row.Cells[0].FindControl("selectedMail") as CheckBox);
if (selectedMail.Checked)
{
string email = row.Cells[7].Text;
compEmail = compEmail+" "+ email;
}
}
}
string url = HttpContext.Current.Request.Url.AbsoluteUri;
string script = "window.onload = function(){ alert('";
script += compEmail;
script += "');";
script += "window.location = '";
script += url;
script += "'; }";
ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true);
}
答案 0 :(得分:0)
这是因为您未在ItemTemplate
内使用任何控件,并且它不会在其中提供Text
。你需要在它们内部使用一些控制,即Label
替换以下
<asp:TemplateField HeaderText="Email" SortExpression="" runat="server">
<ItemTemplate>
<%# Eval("email")%>
</ItemTemplate>
</asp:TemplateField>
用这个
<asp:TemplateField HeaderText="Email" SortExpression="">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("email") %>' />
</ItemTemplate>
</asp:TemplateField>
并在复选框内检查,替换此
string email = row.Cells[7].Text;
compEmail = compEmail+" "+ email;
用这个
Label email = (row.Cells[7].FindControl("Label1") as Label);
compEmail = compEmail + " " + email.Text;
它将解决您的问题,我已对其进行了测试。
希望它有所帮助。此致!