是否可以仅回发特定工具?

时间:2018-11-19 05:27:23

标签: c# asp.net

在我的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();

        }

   }

GridView行命令

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
            {

2 个答案:

答案 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属性来传递正确的参数来确定布局。