asp.net ascx用户控件表单对于某些输入数据是不可编辑的,因此需要隐藏指令

ogsagwnx  于 2023-05-02  发布在  .NET
关注(0)|答案(1)|浏览(138)

我正在从一个遗留代码库中工作,其中有一个www.example的ascx文件中分布的控件 www.example.com 应用程序。
表单将从数据库中加载数据,对于某些加载数据的特定情况,表单将变灰(不可编辑),包括多个复选框等控件。
示例代码为:

<div>
   <p style="border-width:3px; border-style:solid; border-color:#0000FF; padding: 1em;"> Select all groups(s) that apply or select not applicable.</p>
   <%=OurInputHelpers.MultipleCheckBoxes(true, "Group", Model.GetIdsNamesList_SelectedGroups(), "Group", null)%>
   </div>

我正在寻找的机制,如何编辑能力的形式是控制,它是灰色的某些输入数据。
MultipleCheckBoxes的C#代码隐藏如下,但我认为它不会给予太多的见解:[这是遗留代码,所以我没有得到写它的功劳]

public static string MultipleCheckBoxes(bool requiredField, string modelFieldName, List<IdNameListItem> items, string label, string optionalCheckBoxClassName, bool eachOnSeparateLine = false)
    {
        // NOTE: the following prefaces are needed for javascript error processing to work:
        String inputFieldID = "inpt_" + modelFieldName;
        String labelFieldID = "lbl_" + modelFieldName;

        StringBuilder sb = new StringBuilder();

        // NOTE: for this type of ctl we have to surround it with a div tag, so that javascript error processing can apply a red border if need be
        sb.AppendFormat("<div id=\"{0}\">", inputFieldID);
    //    sb.Append("<span>");

        sb.Append(LabelTag(requiredField, null, label, labelFieldID));

        bool firstLine = true;
        foreach (IdNameListItem itm in items)
        {

            if (eachOnSeparateLine)
            {
                if (firstLine)
                {
                    firstLine = false;
                }
                else
                {
                    sb.Append("<br/>");
                }
            }
            string modifiedFieldName = "CheckBoxMulti_" + modelFieldName + "^" + itm.id.ToString();
            string isCheckedClause = (string)(itm.isSelected ? "checked=\"checked\" " : string.Empty);
            if (optionalCheckBoxClassName == null)
            {

                sb.AppendFormat("<input type=\"checkbox\" id=\"{0}\" name=\"{1}\" {2} />{3}&nbsp;&nbsp;",
                      modifiedFieldName, modifiedFieldName, isCheckedClause, itm.name);
            }
            else
            {
                sb.AppendFormat("<input type=\"checkbox\" id=\"{0}\" class=\"{1}\" name=\"{2}\" {3} />{4}&nbsp;&nbsp;",
                      modifiedFieldName, optionalCheckBoxClassName, modifiedFieldName, isCheckedClause, itm.name);
            }
        }
     //   sb.Append("<br/></span>");
        sb.Append("<br/>");
        sb.Append("</div>");
        return sb.ToString();

    }

然而,我找不到控件变灰的确切机制,所以发布的代码只会有部分帮助。
目标:当控件(如多个复选框)变灰时,我想有条件地隐藏对用户的说明。

2ledvvac

2ledvvac1#

实际上在代码库中有:MultipleCheckBoxes和RO_MultipleCheckBoxes,其中RO_代表“只读”
因此,我问的问题有点无实际意义,因为人们只是不把指令标记放在有RO_MultipleCheckBox的地方。
此外,如果没有访问我们的整个代码库,任何人都很难解决这个问题。
然而,我打算把这个问题留到现在,因为它可能会帮助其他人思考这些情况。

相关问题