Я относительно новичок в ASP.NET, изучая, как я иду, и у меня есть следующий вопрос:
У меня есть GridView, определенный внутри UpdatePanel:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div id="divIsoSelect" style="width:700px; height:60px; background-color:white">
<fieldset>
<legend style="font-size: larger; font-weight: bold">Search ISO by</legend>
<table>
<tr>
<td>
<asp:DropDownList ID="ddlISOSearch" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlISOSearch_SelectedIndexChanged">
<asp:ListItem Value="">Select...</asp:ListItem>
<asp:ListItem Value="ISO Number" >ISO Number</asp:ListItem>
<asp:ListItem Value="Name">Name</asp:ListItem>
<asp:ListItem Value="Region" >Region</asp:ListItem>
<asp:ListItem Value="Division">Division</asp:ListItem>
</asp:DropDownList></td>
<td > </td>
<td>
<asp:Panel ID="pnlSearchEntry" runat="server" Visible="false" style="width:500px; border:gainsboro; border-width: thick;">
<table>
<tr>
<td valign="middle" style="width:120px"><asp:Label ID="lblEntry" runnat="server" Text=""></asp:Label></td>
<td valign="top"><asp:TextBox ID="txtSearchValue" runat="server"></asp:TextBox></td>
<td valign="top"> <asp:Button ID="btnFind" runat="server" Text="Select" OnClick="btnFind_Click"/></td>
</tr>
</table>
</asp:Panel>
</td>
</tr>
</table>
</fieldset>
</div>
<div>
<p> <asp:Label ID="lblMsg" runat="server" style="position:absolute; left: 221px; top: 110px;"></asp:Label></p>
</div>
<div>
<asp:GridView ID="grvIsoSearchResults" runat="server"
AutoGenerateColumns="False" PageSize="10"
AllowPaging = "true" Visible="true" BorderColor="Red" GridLines="Both"
OnPageIndexChanged="grvIsoSearchResults_PageIndexChanged"
OnPageIndexChanging="grvIsoSearchResults_PageIndexChanging"
OnSelectedIndexChanged="grvIsoSearchResults_SelectedIndexChanged"
OnSelectedIndexChanging="grvIsoSearchResults_SelectedIndexChanging">
<PagerSettings FirstPageText="First" LastPageText="Last" NextPageText="Next" PageButtonCount="100" />
<Columns>
<asp:TemplateField HeaderText="ISONUM">
<ItemTemplate>
<asp:Label ID="txtgvIsoNum" Text = '<%# Eval("ISONUM")%>' runat="server" Width="70px" style="text-align:center" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="OFFICE NAME">
<ItemTemplate>
<asp:Label ID="txtgvIsoOfficeName" Text = '<%# Eval("ISOOFFICENAME")%>' runat="server" Width="200px" style="text-align:center" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="REGION">
<ItemTemplate>
<asp:Label ID="txtgvRegion" Text = '<%# Eval("REGION")%>' runat="server" Width="50px" style="text-align:center" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DIVISION">
<ItemTemplate>
<asp:Label ID="txtgvDivision" Text = '<%# Eval("CLIENT_ID")%>' runat="server" Width="50px" style="text-align:center" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="EMAIL ADDRESS">
<ItemTemplate>
<asp:TextBox ID="txtgvEmailAddress" Text = '<%# Eval("EMAIL")%>' runat="server" Width="300px" />
<asp:Button ID="btnUpdateEmail" Text = "Update" runat="server" Width="70px" OnClientClick="ValidateEmail()"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
Please Wait.....
</ProgressTemplate>
</asp:UpdateProgress>
Теперь я хочу проверить свое поле электронной почты:
function ValidateEmail()
{
var email = document.getElementById('<%=txtgvEmailAddress.ClientID%>').value;
}
Но я не могу получить доступ к полю электронной почты внутри gridview. Что мне делать, чтобы исправить это?
Спасибо
Вы должны хранить rowindex в HTML hiddenfeild, который должен иметь свойство clientidmode static....
function ValidateEmail()
{
var rowindex=document.getElementById('hiddenfeild').value;
if(document.getElementById('grvIsoSearchResults_txtgvEmailAddress_' + rowindex.toString() + '').value=="")
{
//write your code here
}
}
Если целью является проверка правильности адреса электронной почты, вы можете сделать это с помощью элемента управления asp: RegularExpression. Включите это право под вашим контролем текстового поля. Избавьтесь от OnClientClick на вашей кнопке.
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtgvEmailAddress" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>