【问题标题】:is it possible to Postback only Specific tools?是否可以仅回发特定工具?
【发布时间】:2018-11-19 05:27:23
【问题描述】:

在我的 aspx 页面上,有 10 个文本框的输入表单, 1 个下拉菜单(自动回发 = true) 和两个按钮。

dropdown SelectedIndexChanged 填充两个文本框值。

button1 名称:“添加” & button2 名称:“更新” 在页面加载“更新”visible = false

当从 gridview 点击“编辑”时,“添加”visible = false 和 “更新”可见=真。 由于默认页面加载“更新”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
            {

【问题讨论】:

  • Button2.Visible = !addbtn.Visible

标签: c# asp.net


【解决方案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 吓到您,这可能是一个答案;)

【讨论】:

  • 谢谢。我已经在使用 btn.Visible = false 进行管理;和 btn.Visible = true;
  • 我认为问题不在于您的可见/隐藏管理,而更多在于您在何处使用它们以及如何处理回发。您能否分享您的代码以便我们提供帮助?
  • 如果我理解得很好,您的问题是页面加载使按钮更新恢复为不可见?在这种情况下,为什么不在 If(!Page.IsPostBack) 中添加“visible = false”?
  • 实际上我建议也将文本框禁用也放在条件中。
【解决方案2】:

Ajax 或更新面板可以解决问题,如果你想用纯代码解决这个问题,传递正确的参数来确定布局可以通过验证参数和切换页面加载中的可见属性来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 2019-08-23
    • 1970-01-01
    • 2022-01-11
    • 2019-09-30
    • 2018-12-25
    • 2022-01-22
    • 2014-02-20
    相关资源
    最近更新 更多