Javascript 模板字段文本框的getElementByID

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

我已将RowDataBound用于gridview。下面是我的C代码

gridview的Asp.Net代码

<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在
事件中
你试图验证
你的
文本框
值?如果你能在你的帖子中包含该代码,它可能会有帮助。