<asp:Repeater runat="server" ID="rep" >
<ItemTemplate>
<asp:DropDownList ID="drp" runat ="server" OnSelectedIndexChanged="drp_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text ="aa"></asp:ListItem>
<asp:ListItem Text="bb"></asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="txtA" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
А в коде:
VB.NET:
Protected Sub drp_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim drp As DropDownList = CType(sender, DropDownList)
Dim itm As RepeaterItem = CType(drp.Parent, RepeaterItem)
Dim txtA As TextBox = CType(itm.FindControl("txtA"), TextBox)
If txtA <> Nothing And drp.SelectedValue ="aa" Then
'txtA.Text = "AAA";
txtA.Visible = False
End If End Sub
ИЛИ C#:
protected void drp_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList drp = (DropDownList)sender;
RepeaterItem itm = (RepeaterItem)drp.Parent;
TextBox txtA = (TextBox)itm.FindControl("txtA");
if (txtA != null && drp.SelectedValue =="aa")
{
//txtA.Text = "AAA";
txtA.Visible = false;
}
}
Jquery ваш ответ. событие изменения выпадающего списка - это то, что вам нужно. Но вам нужно получить текстовые поля из той же строки, где выпадающее меню. Вы можете легко найти код jquery для этого. –
Проблема с jQuery заключается в том, что она требует 'id'. Атрибут 'id' зарезервирован для .net, который автоматически присваивает его, что затрудняет получение элементов. –
Вы также можете поместить класс в выпадающий список. Или вы можете использовать $ ('# <% = drp.ClientID%>') в jquery. Проблема с подходом на стороне сервера намного больше (обратная связь при каждом выборе) –