在我的aspx页面上,有一个包含10个文本框的输入表单, 1个下拉菜单(自动回发= true) 和两个按钮。
SelectedIndexChanged下拉列表将填充两个文本框的值。
button1名称:“添加”和button2名称:“更新”
在页面上加载“更新” visible = false
在gridview中单击“编辑”时,“添加” visible = false
,然后
“更新”可见= true。
由于我更改下拉菜单时默认页面加载为“更新” visible = false
,
“更新”按钮不可见。
是否可以仅回发特定工具(在我的情况下为文本框)?
目前,我正在下拉菜单下面尝试以下代码(我知道这很疯狂)
if (addbtn.Visible == true) {Button2.Visible = false;}
else if (addbtn.Visible == false) { Button2.Visible = true;}
protected void Page_Load(object sender, EventArgs e)
{
TextBox15.Enabled = false;
TextBox16.Enabled = false;
Button2.Visible = false;
if (!IsPostBack)
{
bind_dropdown();
}
}
protected void GridView1_RowCommand1(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "editform")
{
addbtn.Visible = false;
Button2.Visible = true;
}
private void bind_dropdown()
{
DropDownList1.DataTextField = "CITYNAME";
DropDownList1.DataValueField = "AID";
DropDownList1.DataBind();
}
protected void DropDownList1_SelectedIndexChanged1(object sender, EventArgs e)
{
if (addbtn.Visible == true)
{
Button2.Visible = false;
}
else if (addbtn.Visible == false)
{
Button2.Visible = true;
}
if (DropDownList1.SelectedIndex == 0)
{
TextBox15.Text = "";
TextBox16.Text = "";
}
else
{
try
{
答案 0 :(得分:1)
由于您不提供代码,所以我只能猜测您要实现的目标。
处理此类问题的最佳方法可能是使用MKH提出的AJAX。
如果您不想处理AJAX,也可以这样操作:
<form id="form1" runat="server">
<div>
<asp:DropDownList runat="server" ID="ddown" OnSelectedIndexChanged="ddown_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
<asp:TextBox runat="server" ID="tb"></asp:TextBox>
<asp:LinkButton runat="server" ID="btn" OnClick="btn_Click"></asp:LinkButton>
</div>
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddown.Items.Add(new ListItem("Default", "-1"));
ddown.Items.Add(new ListItem("text 0", "0"));
ddown.Items.Add(new ListItem("text 1", "1"));
ddown.Items.Add(new ListItem("text 2", "2"));
}
}
protected void btn_Click(object sender, EventArgs e)
{
}
protected void ddown_SelectedIndexChanged(object sender, EventArgs e)
{
tb.Text = ddown.SelectedItem.Text;
btn.Visible = false;
}
这样,您只将必须初始化一次的代码放入“ If(!Page.IsPostBack)”中。
然后使用,您可以从SelectedIndexChanged管理“可见”部分。
这个答案还不完整,因为我不完全了解您的需求,但是如果AJAX吓到您,那可以作为答案;)
答案 1 :(得分:0)
Ajax或更新面板将解决问题,如果您想用后面的纯代码来解决此问题,则可以通过验证参数并在页面加载中切换visible属性来传递正确的参数来确定布局。