【问题标题】:Setting MaxLength on TextBox depending upon DropDownList selection?根据 DropDownList 选择在 TextBox 上设置 MaxLength?
【发布时间】:2012-03-09 20:56:58
【问题描述】:

我有一个根据 DropDownList 中的选择显示的 TextBox。文本框的默认行为是Visible="false"。 MaxLength 值需要根据 DropDownList 中的选择而变化。请注意,有时 TextBox 不会显示。

我在下面提供了标记。

    <asp:UpdatePanel ID="updatePanel" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" RenderMode="Inline">
        <ContentTemplate>
            <asp:DropDownList ID="ddlList" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlList_SelectedIndexChanged">
            </asp:DropDownList>
            <asp:TextBox ID="tbOther" runat="server" Visible="false" OnPreRender="tbOther_PreRender"></asp:TextBox>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ddlList" />
        </Triggers>
    </asp:UpdatePanel>

我仍在努力解决这个问题,但是否可以将 MaxLength 的值保存在 DropDownList 上,然后在后面的代码中使用该值在 TextBox 上设置 MaxLength?由于我在 UpdatePanel 中有下拉菜单并且正在使用 AutoPostBack,因此这似乎应该是可能的,但我不知道如何/在何处存储该值。

【问题讨论】:

  • 我认为使用JS设置文本框的最大长度而不是回发会更快更有效。

标签: asp.net .net textbox


【解决方案1】:

是的。你可以这样做。

void Page_Load()
{
    tbOther.MaxLength = Int32.Parse(ddlList.SelectedValue);
}

该值会自动存储在页面的ViewState 中,因此您完全不必担心。

【讨论】:

  • 您将需要转换或转换 ddlList.SelectedValue
  • 我的 Page_Load() 中基本上有相同的代码,但它似乎不起作用。我做了一个“查看源代码”,没有看到 maxlength 值。我应该提到这可能是问题所在的用户控件中?
  • 请注意,如果我刷新页面(再次导致回发),则该值已正确设置。这就是为什么我认为 Page_Load() 不是一个有效的解决方案。我相信页面是在 Page_Load() 执行时呈现的,但用户控件没有“Pre”呈现事件。
  • 对了,我也试过在上面列出的 OnPreRender="tbOther_PreRender" 中设置值。
猜你喜欢
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多