Javascript 单击编辑按钮时,如何根据另外两个文本框的情况隐藏或禁用radiobuttonlist和textbox

Javascript 单击编辑按钮时,如何根据另外两个文本框的情况隐藏或禁用radiobuttonlist和textbox,javascript,asp.net,controls,code-behind,formview,Javascript,Asp.net,Controls,Code Behind,Formview,我有一个带有文本框、radiobuttonlist和edit按钮的formview,顺序如下 <asp:textbox id="tb1" runat="server" text='<%# Bind("DATE_1", "{0:d}") %>' /> <asp:calendarextender id="tb1_CalendarExtender" runat="server" targetcontrolid="tb1" /> <asp:textbox

我有一个带有文本框、radiobuttonlist和edit按钮的formview,顺序如下

 <asp:textbox id="tb1" runat="server" text='<%# Bind("DATE_1", "{0:d}") %>' />
 <asp:calendarextender id="tb1_CalendarExtender" runat="server" targetcontrolid="tb1" />

 <asp:textbox id="tb2" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb2_CalendarExtender" runat="server" targetcontrolid="tb2" />

 <asp:button id="EditButton" runat="server" causesvalidation="False" commandname="Edit" text="Edit" enabled='<%# CanEdit(Eval("DATE_1"), Eval("DATE_2")) %>' OnClick="EditButton_Click" />

 <asp:radiobuttonlist id="rbl1" runat="server" repeatdirection="Horizontal" text='<%# Bind("DIAG_LL_APPROVAL") %>'>
      <asp:ListItem>Approved</asp:ListItem>
      <asp:ListItem>Rejected</asp:ListItem>
      <asp:ListItem Selected="True">None</asp:ListItem>
 </asp:radiobuttonlist>
 <asp:textbox id="tb3" runat="server" text='<%# Bind("COMMENTS") %>' maxlength="1000"/>                                 

错误:未将项目引用设置为对象的实例单击按钮时,您可以检查tb1和tb2是否为字符串。如果是,则将rbl1和tb3的Visibility属性设置为false

或者,当rbl1和tb3中没有键入文本时,您可以使用tb1和tb2的ContextChanged事件。当有人添加文本时,它们将自动设置为可见

顺便说一句:你需要使用更好的命名约定

<asp:textbox id="tb1" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb1_CalendarExtender" runat="server" targetcontrolid="tb1" />

 <asp:textbox id="tb2" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb2_CalendarExtender" runat="server" targetcontrolid="tb2" />

 <asp:button id="EditButton" runat="server" causesvalidation="False" 
        commandname="Edit" text="Edit" 
        enabled='<%# CanEdit(Eval("DATE_2"), Eval("DATE_2")) %>' 
        onclick="EditButton_Click" />

 <asp:radiobuttonlist id="rbl1" runat="server" Visible="false" repeatdirection="Horizontal" text='<%# Bind("DIAG_LL_APPROVAL") %>'>
      <asp:ListItem>Approved</asp:ListItem>
      <asp:ListItem>Rejected</asp:ListItem>
      <asp:ListItem Selected="True">None</asp:ListItem>
 </asp:radiobuttonlist>
 <asp:textbox id="tb3" runat="server" Visible="false" text='<%# Bind("COMMENTS") %>' maxlength="1000"/> 
试试这个: 在“编辑”按钮上单击事件:

if (string.IsNullOrEmpty(tb1.Text) && string.IsNullOrEmpty(tb2.Text))
        {
            rbl1.Visible = false;
            tb3.Visible = false;
        }
编辑

TextBox txt = (TextBox)FormView1.FindControl("tb1");

TextBox txt1 = (TextBox)FormView1.FindControl("tb2");

TextBox tb3= (TextBox)FormView1.FindControl("tb3");

 RadioButtonList rb1= (RadioButtonList)FormView1.FindControl("rbl1");


    if (string.IsNullOrEmpty(txt.Text) && string.IsNullOrEmpty(txt1.Text))
            {
                rb1.Visible = false;
                tb3.Visible = false;
            }
          else

              {
                rb1.Visible = true;
                tb3.Visible = true;
}

我会这样做:

 <asp:textbox id="tb1" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb1_CalendarExtender" runat="server" targetcontrolid="tb1" />

 <asp:textbox id="tb2" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb2_CalendarExtender" runat="server" targetcontrolid="tb2" />

 <asp:button id="EditButton" runat="server" causesvalidation="False" commandname="Edit" text="Edit" enabled='<%# CanEdit(Eval("DATE_2"), Eval("DATE_2")) %>'
             onclientclick="verifyEditControls();" />

 <div class="hide edit-controls">
     <asp:radiobuttonlist id="rbl1" runat="server" repeatdirection="Horizontal" text='<%# Bind("DIAG_LL_APPROVAL") %>'>
        <asp:ListItem>Approved</asp:ListItem>
        <asp:ListItem>Rejected</asp:ListItem>
        <asp:ListItemSelected="True">None</asp:ListItem>
    </asp:radiobuttonlist>
    <asp:textbox id="tb3" runat="server" text='<%# Bind("COMMENTS") %>' maxlength="1000"/>
 </div>

经核准的
拒绝
没有一个
并添加一个javascript(为了简单起见,我在这里使用jQuery)


函数verifyEditControls(){
变量c1='#',
c2=“#”;
如果($(c1.val().length>0 | |$(c2.val().length>0)
$(“.edit controls”).show();
其他的
$(“.edit controls”).hide();
返回$(“.edit controls”)。为(“可见”);
}
如果控件不可见且仅显示已包装的控件,则此操作将禁用回发,但如果按下编辑按钮且控件可见,则会发送一个
true
,页面将回发到按钮上调用的方法

只需添加一个
命令
单击
服务器事件即可


如果您想使用普通按钮,无需要求.NET Framework为您创建一个,只需使用
Edit

我将尝试添加一个示例代码,您想在右键单击编辑按钮时检查此项吗?顺便说一句:将ListItemSelected=“True”更改为ListItemSelected=“True”为了显示/隐藏控件,您需要执行完整的回发吗?我们又回到了90年代了吗?错误信息是“名称tb1、tb2、rbl1、tb3在当前上下文中不存在”,这是一个不同的问题,与我作为附带建议向您展示的代码无关;给控件起一个描述性名称总是很好的,这样,在您知道
tb1
tb2
是什么之后,无论谁拿起代码都可以:如果(!string.IsNullOrEmpty(t1.Text)和&!string.IsNullOrEmpty(t2.Text))显示id名称(tb1、tb2、tb3和rbl1)不在当前上下文中,则会出现此错误的语句。我正在使用formview@Viswa,您需要使用findcontrol在formview中查找控件查看此获取错误:对象引用未设置为对象的实例。如果(!string.IsNullOrEmpty(t1.Text)和&!string.IsNullOrEmpty(t2.Text))在c#code中查找当前上下文中不存在名称“tb1”这是您需要调试的内容,这是您的错误,我相信它会说,即使您自己的代码没有任何更改,您也需要先调试它。
TextBox txt = (TextBox)FormView1.FindControl("tb1");

TextBox txt1 = (TextBox)FormView1.FindControl("tb2");

TextBox tb3= (TextBox)FormView1.FindControl("tb3");

 RadioButtonList rb1= (RadioButtonList)FormView1.FindControl("rbl1");


    if (string.IsNullOrEmpty(txt.Text) && string.IsNullOrEmpty(txt1.Text))
            {
                rb1.Visible = false;
                tb3.Visible = false;
            }
          else

              {
                rb1.Visible = true;
                tb3.Visible = true;
}
 <asp:textbox id="tb1" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb1_CalendarExtender" runat="server" targetcontrolid="tb1" />

 <asp:textbox id="tb2" runat="server" text='<%# Bind("DATE_2", "{0:d}") %>' />
 <asp:calendarextender id="tb2_CalendarExtender" runat="server" targetcontrolid="tb2" />

 <asp:button id="EditButton" runat="server" causesvalidation="False" commandname="Edit" text="Edit" enabled='<%# CanEdit(Eval("DATE_2"), Eval("DATE_2")) %>'
             onclientclick="verifyEditControls();" />

 <div class="hide edit-controls">
     <asp:radiobuttonlist id="rbl1" runat="server" repeatdirection="Horizontal" text='<%# Bind("DIAG_LL_APPROVAL") %>'>
        <asp:ListItem>Approved</asp:ListItem>
        <asp:ListItem>Rejected</asp:ListItem>
        <asp:ListItemSelected="True">None</asp:ListItem>
    </asp:radiobuttonlist>
    <asp:textbox id="tb3" runat="server" text='<%# Bind("COMMENTS") %>' maxlength="1000"/>
 </div>
<script>
    function verifyEditControls() {
        var c1 = '#<%= tb1.ClientID %>',
            c2 = '#<%= tb2.ClientID %>';

        if($(c1).val().length > 0 || $(c2).val().length > 0)
            $(".edit-controls").show();
        else 
            $(".edit-controls").hide();

        return $(".edit-controls").is("visible");
    }
</script>