Я использую Gridview для обработки своих результатов и поставлю его в текстовом поле в ModalPopUp. Прежде всего. Я хочу обработать его, и каким-то образом, когда я использую TemplateField, я не вижу никакого результата в своем предупреждении. Но когда я пытаюсь использовать BoundField, результат показывает. Я не знаю, если это потому, что я могу показать только boundField или что я делаю неправильно. Вот часть кода, которую я использую для этой конкретной части. Everytime я использую TemplateField он не будет работать :(Шаблон Поле не отображается, следует использовать BoundField? (не работает)
<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);
}
Что происходит здесь, когда вы используете TemplateField? string email = row.Cells [7] .Text; – Seano666
Завершить пустой. Пустое предупреждение. –
TemplateField, вероятно, создает контейнер, и ваш контроль находится внутри контейнера. Чтобы узнать, вам нужно выполнить некоторую базовую отладку, установить точку останова и проверить row.Cells [7], чтобы узнать, где находится ваш элемент управления. – Seano666