Проблема не в коде переключения состояния Visible в Page_Load, но желательно
как предложено @Shoban, поместить код переключения состояния Visible в
if(!IsPostback) { //set the visible state to false; }
или лучше установите свойство Visible каждого элемента управления в разметке.
<asp:TextBox ID='TextBox1' runat="server" Visible="false">
</asp:TextBox>
Но проблема в следующем методе:
Это стрельба? Если нет, включите viewstate на вашей странице / в выпадающем списке
Если это стреляет, код, который вы написали, не будет работать. Потому что SelectedValue отображается в поле "id" в вашем методе Populate
DropDownList1.DataValueField = "id";
но в приведенном ниже коде вы проверяете DataTextField (столбец "value")
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (DropDownList1.SelectedValue == "Others")
{
TextBox1.Visible = true;
Button1.Visible = true;
}
}
изменить чек:
if (DropDownList1.SelectedItem.Text.Equals("Others", StringComparison.Ordinal))
{
TextBox1.Visible = true;
}