Javascript 模板字段文本框的getElementByID
我已将RowDataBound用于gridview。下面是我的C代码 gridview的Asp.Net代码Javascript 模板字段文本框的getElementByID,javascript,asp.net,Javascript,Asp.net,我已将RowDataBound用于gridview。下面是我的C代码 gridview的Asp.Net代码 <asp:UpdatePanel ID="updatePanel" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" /> </Triggers> <ContentTempl
<asp:UpdatePanel ID="updatePanel" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="gvParameterValue" SkinID="GridView" runat="server" OnRowDataBound ="gvParameterValue_RowDataBound" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Location Name">
<asp:TemplateField HeaderText="Parameter Value">
<ItemTemplate>
<asp:TextBox ID="txtValue" SkinID="fineLineTextBox" TabIndex="1" runat="server" AutoPostBack="false"></asp:TextBox>
<%--<asp:TextBox ID="TextBox1" SkinID="fineLineTextBox" TabIndex="1" runat="server" OnTextChanged="textBox1_textChanged" AutoPostBack="true"></asp:TextBox>--%>
<asp:Label ID="lblPreDayVal" runat="server" Text='<%# Bind("PreviousValue") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate >
</asp:UpdatePanel>
它给出错误“MicrosoftJScript运行时错误:需要对象”
”
我已经尝试了网络上所有可能的解决方案,但没有任何效果…您在ID
lblPreDayValue
上调用了getElementById
。在ASP.NET标记中,您将其称为lblPreDayVal
您可能还希望使用以确保获得由.NET生成的正确ID,该ID是您在ID
lblPreDayValue
上调用的getElementById
。在ASP.NET标记中,您将其称为lblPreDayVal
您可能还希望使用以确保获得由.NET生成的正确ID,请尝试使用
function ValueOnChange()
{
var val = document.getElementById('#<%= lblPreDayVal.ClientID %>').innerHTML;
}
尝试使用
function ValueOnChange()
{
var val = document.getElementById('#<%= lblPreDayVal.ClientID %>').innerHTML;
}
在gvParameterValue_RowDataBound方法的绑定步骤中,您可以从服务器端传递ClientID,如下所示:-
TextBox txtBox = (TextBox)e.Row.FindControl("txtValue");
Label lblVal = (Label)e.Row.FindControl("lblPreDayVal");
txtBox.Attributes.Add("onchange", "ValueOnChange('" + lblVal.ClientID + "');");
然后在ValueOnChange方法定义中,将参数作为cid传递(假设)
在gvParameterValue_RowDataBound方法的绑定步骤中,您可以从服务器端传递ClientID,如下所示:-
TextBox txtBox = (TextBox)e.Row.FindControl("txtValue");
Label lblVal = (Label)e.Row.FindControl("lblPreDayVal");
txtBox.Attributes.Add("onchange", "ValueOnChange('" + lblVal.ClientID + "');");
然后在ValueOnChange方法定义中,将参数作为cid传递(假设)
在
gridview
的RowBound
事件中尝试传递值
,您尝试访问getElementbyId('lblLocID')
将不起作用,因为行呈现时它的id将更改
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblLocID = (Label)e.Row.FindControl("lblLocationID");
Label lblPreDayValue =(Label)e.Row.FindControl("lblPreDayValue");
if (lblLocID.Text.Equals("154") || lblLocID.Text.Equals("168") || lblLocID.Text.Equals("178"))
{
TextBox txtBox = (TextBox)e.Row.FindControl("txtValue");
txtBox.Attributes.Add("onchange", "ValueOnChange(" + lblPreDayValue.ClientID + ");");
}
}
将ClientID
传递到函数后
//也可以直接传递label的值并赋值
function ValueOnChange(ClntID)
{
var val = document.getElementById('ClntID').innerHTML;
}
在
gridview
的RowBound
事件中尝试传递值
,您尝试访问getElementbyId('lblLocID')
将不起作用,因为行呈现时它的id将更改
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lblLocID = (Label)e.Row.FindControl("lblLocationID");
Label lblPreDayValue =(Label)e.Row.FindControl("lblPreDayValue");
if (lblLocID.Text.Equals("154") || lblLocID.Text.Equals("168") || lblLocID.Text.Equals("178"))
{
TextBox txtBox = (TextBox)e.Row.FindControl("txtValue");
txtBox.Attributes.Add("onchange", "ValueOnChange(" + lblPreDayValue.ClientID + ");");
}
}
将ClientID
传递到函数后
//也可以直接传递label的值并赋值
function ValueOnChange(ClntID)
{
var val = document.getElementById('ClntID').innerHTML;
}
我已将lblPreDayValue更正为lblPreDayVal,但问题仍未解决。是否需要任何额外编码。请帮助…感谢RGraham…@user2659305问题是Asp.Net在输出id时会损坏id-因此您需要使用
ClientId()
函数获取元素的损坏(真实)id我已将lblPreDayValue更正为lblPreDayVal,但问题仍然没有解决。是否需要任何额外的编码。请帮助…谢谢RGraham…@user2659305问题是Asp.Net在输出ID时会损坏ID-因此您需要使用ClientId()
函数来获取损坏的ID(real)元素id这将解决您从文本框字段动态访问标签值的问题。这将解决您从文本框字段动态访问标签值的问题。是否确实在aspx页面中添加了jquery文件引用。如果是,则将(.innerHtml)替换为(.value).应该可以用..我想我使用的是javascript,不需要添加jquery.你用.values替换了吗?是的,但没有用,我的头很痛,我也应用了其他论坛上的很多步骤和建议,并对它们感到困惑。请参阅rowdata bound中的上述代码,我已根据条件将onchange事件附加到特定的文本框中。。。表示在触发rowdata绑定事件后完成验证…您确定在aspx页面中添加了jquery文件引用吗..如果是,则将(.innerHtml)替换为(.Value)。应该可以工作..我想我使用的是javascript,不需要添加jquery。您是否将其替换为.valueyes但没有工作,我的头因此而疼痛,我也应用了其他论坛上的很多步骤和建议,并对它们感到困惑。请参阅rowdata bound中的上述代码,我已根据条件将onchange事件附加到特定的文本框中。。。表示在触发rowdata绑定事件后完成验证…@Sagar您尝试过上述代码吗?您可以在绑定期间验证您的输入,但是,如果您想在绑定后验证textbox
,请在感兴趣的textbox
中使用AutoPostBack=“true”
尝试上述代码。在运行时会出现异常…对象引用未设置为对象的实例。好的朋友,我认为我的代码不好,我必须做更多的练习,但如果有人得到答案,请更新它听到…@Sagar你能详细说明你到底想要什么吗,我的意思是要求,如果你能用你现在正在做的事情来更新你的代码。@Sagar在事件中
你试图验证你的文本框
值吗?如果你能在你的帖子中包含该代码,它可能会有帮助。@Sagar你试过上面的代码吗?您可以在绑定期间验证您的输入,但是,如果您想在绑定后验证textbox
,请在感兴趣的textbox
中使用AutoPostBack=“true”
尝试上述代码。在运行时会出现异常…对象引用未设置为对象的实例。好的朋友,我认为我的代码不好,我必须做更多的练习,但如果有人得到答案,请更新它听到…@Sagar你能详细说明你到底想要什么吗,我的意思是要求,如果你能用你现在正在做的事情更新你的代码。@Sagar在事件中
你试图验证你的文本框
值?如果你能在你的帖子中包含该代码,它可能会有帮助。