首先,我的英语不是很好但是我试着让它尽可能地理解
所以我做的是创建一个gridview,其中列; 两个控制标签和文本框 标签设置为可见 而文本框反之亦然
这是我的gridview的客户端代码
<asp:Image ID="img" onclick="javascript:Toggle(this);" runat="server" ImageUrl="~/Images/minus.gif"
ToolTip="Collapse" Width="7px" Height="7px" ImageAlign="AbsMiddle" /></a>
<asp:Label ID="lbllastname" Height="15px" Width="180px" runat="server" Text='<%# Eval("CourseCatName")%>'></asp:Label>
<asp:TextBox ID="txtCourseCategory" AutoPostBack="true" runat="server" Text='<%# Eval("CourseCatName")%>'
Font-Size="XX-Small" Font-Names="Verdana" Style="display: none" OnTextChanged="txtCourseCategory_TextChanged"
Height="16px" Width="207px"></asp:TextBox><br />
我知道很难在gridview中找到控件所以我所做的是在我的服务器端创建一个atrribute来传递我的javascript函数 这就是我做的事情
Dim txttry As TextBox = DirectCast(e.Row.FindControl("txtCourseCategory"), TextBox)
Dim labeltry As Label = DirectCast(e.Row.FindControl("lbllastname"), Label)
labeltry.Attributes.Add("onclick", "javascript:return validate('" + txttry.ClientID + "','" + labeltry.ClientID + "')")
在我的javascript上我创建了一个调用控件的函数
function validate(txtobj, lblobj) {
document.getElementById(lblobj).style.display = 'none';
document.getElementById(txtobj).style.display = 'block';
}
因此代码可以工作,我认为它几乎已经完成,但是当我运行程序并点击标签时;
标签隐藏但文本框在下面,就像之间有<br/>
一样
我再次检查代码,但没有发现任何可能使下面的文本框。
先生/女士您认为这是什么问题,还是应该为它添加一个CSS?
或者我的代码是个大问题?
我愿意接受建议:不好或好。
顺便说一下,我是javascript的新手
感谢您花时间和精力试图阅读我的问题。
答案 0 :(得分:3)
尝试更改以下行:
document.getElementById(txtobj).style.display = 'block';
成为:
document.getElementById(txtobj).style.display = '';
// OR
document.getElementById(txtobj).style.display = 'inline';
如果将元素设置为block
元素,它将显示在下一行,因为这是块元素的作用。如果将display
属性设置为空字符串,则应通过将其设置为特定元素类型的默认display
类型使其再次可见,对于特定元素类型,在输入元素的情况下应为{{1 }}。如果这不起作用,您可以明确地将其设置为inline
。
此处提供了有关inline
的更多信息:http://www.quirksmode.org/css/display.html - 完整的图片,甚至是页面底部的动态更改设置演示。
答案 1 :(得分:0)
您也可以不使用javascript进行操作。 为此,您需要使用2个面板。在一个面板中保留您的标签,在其他面板中保留您的文本框。现在通过将其visible属性设置为false来保持面板与文本框不可见。 现在在按钮单击事件中获取标签文本并将其存储在字符串变量中,并将包含标签的面板的visible属性更改为false。然后将包含文本框的面板的可见属性更改为true,并使用变量中的字符串设置text属性。