Javascript 单击编辑按钮时,如何根据另外两个文本框的情况隐藏或禁用radiobuttonlist和textbox
我有一个带有文本框、radiobuttonlist和edit按钮的formview,顺序如下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
<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>