Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误:名称';RGGSTAcCode';在当前上下文中不存在_Javascript_Asp.net_Telerik_Radgrid - Fatal编程技术网

Javascript 错误:名称';RGGSTAcCode';在当前上下文中不存在

Javascript 错误:名称';RGGSTAcCode';在当前上下文中不存在,javascript,asp.net,telerik,radgrid,Javascript,Asp.net,Telerik,Radgrid,在其中一个网页中,我有RadGrid内部FormView控件 i、 例如,如下所示: <asp:FormView ID="fvIPRForm" runat="server" DefaultMode="Insert" DataKeyNames="RequestID" DataSourceID="odsIPRForm" EnableModelValidation="True" OnItemInserting="fvIPRForm_ItemInserting" OnDataBound="

在其中一个网页中,我有
RadGrid
内部
FormView
控件 i、 例如,如下所示:

<asp:FormView ID="fvIPRForm" runat="server" DefaultMode="Insert" DataKeyNames="RequestID"
  DataSourceID="odsIPRForm" EnableModelValidation="True" OnItemInserting="fvIPRForm_ItemInserting"
  OnDataBound="fvIPRForm_DataBound" OnItemUpdating="fvIPRForm_Updating" OnItemCommand="fvIPRForm_ItemCommand">

<%-- Create New IPR--%>
<InsertItemTemplate>

<telerik:RadMultiPage ID="RadMultiPage5" runat="server" SelectedIndex="0" Width="100%">
<telerik:RadPageView ID="RadPageView4" runat="server" Width="100%">
<telerik:RadAjaxPanel ID="RadAjaxPanel4" runat="server">

//RadGrid
<telerik:RadGrid ID="RGGSTAcCode" runat="server" AutoGenerateColumns="false"....>
 //other code

<telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
  <ItemTemplate>
    <asp:Label ID="lblAcCode" Text='<%# Eval("AccountCode") %>' runat="server"></asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:Label ID="lblAcCode2" runat="server" Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>' Visible="false"></asp:Label>     

    <telerik:RadComboBox ID="ddlAccountCode" runat="server" Height="200" Width="260"
    AllowCustomText="true" onclienttextchange="OnClientTextChange">
    </telerik:RadComboBox>

    <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" OnClientClick="ButtonClicked()" UseSubmitBehavior="true" />&nbsp;                                      
  </EditItemTemplate>
</telerik:GridTemplateColumn>

</telerik:RadGrid>

</telerik:RadAjaxPanel>
</telerik:RadPageView>
</telerik:RadMultiPage>

</InsertItemTemplate>

<%-- Edit IPR--%>
<EditItemTemplate>

<telerik:RadMultiPage ID="RadMultiPage5" runat="server" SelectedIndex="0" Width="100%">
<telerik:RadPageView ID="RadPageView4" runat="server" Width="100%">
<telerik:RadAjaxPanel ID="RadAjaxPanel4" runat="server">

//RadGrid
<telerik:RadGrid ID="RGGSTAcCode" runat="server" AutoGenerateColumns="false"....>
 //other code

<telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
  <ItemTemplate>
    <asp:Label ID="lblAcCode" Text='<%# Eval("AccountCode") %>' runat="server"></asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:Label ID="lblAcCode2" runat="server" Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>' Visible="false"></asp:Label>     

    <telerik:RadComboBox ID="ddlAccountCode" runat="server" Height="200" Width="260"
    AllowCustomText="true" onclienttextchange="OnClientTextChange">
    </telerik:RadComboBox>

    <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" OnClientClick="ButtonClicked()" UseSubmitBehavior="true" />&nbsp;                                      
  </EditItemTemplate>
</telerik:GridTemplateColumn>

</telerik:RadGrid>

</telerik:RadAjaxPanel>
</telerik:RadPageView>
</telerik:RadMultiPage>

</EditItemTemplate>

 <%-- View IPR--%>
<ItemTemplate>

<telerik:RadMultiPage ID="RadMultiPage5" runat="server" SelectedIndex="0" Width="100%">
<telerik:RadPageView ID="RadPageView4" runat="server" Width="100%">
<telerik:RadAjaxPanel ID="RadAjaxPanel4" runat="server">

//RadGrid
<telerik:RadGrid ID="RGGSTAcCode" runat="server" AutoGenerateColumns="false"....>
 //other code

<telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
  <ItemTemplate>
    <asp:Label ID="lblAcCode" Text='<%# Eval("AccountCode") %>' runat="server"></asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:Label ID="lblAcCode2" runat="server" Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>' Visible="false"></asp:Label>   

    <telerik:RadComboBox ID="ddlAccountCode" runat="server" Height="200" Width="260"
    AllowCustomText="true" onclienttextchange="OnClientTextChange">
    </telerik:RadComboBox>

    <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" OnClientClick="ButtonClicked()" UseSubmitBehavior="true" />&nbsp;                                      
  </EditItemTemplate>
</telerik:GridTemplateColumn>

</telerik:RadGrid>

</telerik:RadAjaxPanel>
</telerik:RadPageView>
</telerik:RadMultiPage>

</ItemTemplate>

</asp:FormView>
当我运行我的网页时,我总是会出现以下错误:

当前上下文中不存在名称“RGGSTAcCode”

我尝试更改JavaScript代码,如下所示:

var form = document.getElementById('<%=fvIPRForm.FindControl("RGGSTAcCode").ClientID%>'); 
var masterTable = form.get_masterTableView();
alert(masterTable);

这可能是您想要的答案……
不是最好的,但正在发挥作用

.aspx


Javascript

    <telerik:RadCodeBlock ID="rcb" runat="server">
        <script type="text/javascript">
            function onTextChange(sender, args) {
                var grid = $find('<%=fv.FindControl("RadGrid1").ClientID %>');
                var gridMasterData = grid.get_masterTableView();
                var dataItem = gridMasterData.get_dataItems();
                var length = dataItem.length;

                // Loop
                for (var i = 0; i < length; i++) {
                    // Find Control
                    var comboBox = dataItem[i].findControl("ddlAccountCode");

                    // Check
                    if (comboBox != undefined) {
                        if (sender.get_id() == comboBox.get_id()) {
                            // Find Button
                            var btn = dataItem[i].findControl("btnSearch");
                            var item = sender.get_text();

                            // Check
                            if (item.length > 5) {
                                if (btn != undefined) btn.set_visible(true);
                            }
                            else btn.set_visible(false);

                            break;
                        }
                        else
                            continue;
                    }
                }
            }
        </script>
    </telerik:RadCodeBlock>

函数onTextChange(发送方,参数){
变量网格=$find(“”);
var gridMasterData=grid.get_masterTableView();
var dataItem=gridMasterData.get_dataItems();
var length=dataItem.length;
//环路
对于(变量i=0;i5){
如果(btn!=未定义)btn.set_可见(true);
}
其他btn.set_可见(假);
打破
}
其他的
持续
}
}
}
.cs

受保护的无效页面加载(对象发送方,事件参数e)
{
//检查
如果(!IsPostBack)
{
//变数
DataTable dt=新的DataTable();
DataTable dt1=新DataTable();
dt.列添加(“Acc”);
dt1.列。添加(“a”);
//环路
对于(int i=0;i<2;i++)
dt.行。添加(“a”+i);
dt1.行。添加(“AAAA”);
视图状态[“数据”]=dt;
//束缚
fv.DataSource=dt1;
fv.DataBind();
dt.Dispose();
dt1.Dispose();
}
}
受保护的无效fv_数据绑定(对象发送方、事件参数e)
{
//FindControl
RadGrid RadGrid1=fv.FindControl(“RadGrid1”)作为RadGrid;
//检查
if(RadGrid1!=null)
{
RadGrid1.DataSource=ViewState[“数据”]作为DataTable;
RadGrid1.DataBind();
}
}
受保护的void RadGrid1_NeedDataSource(对象发送方,GridNeedDataSourceEventArgs e)
{
RadGrid rg=fv.FindControl(“RadGrid1”)作为RadGrid;
//检查
如果(rg!=null)
{
rg.DataSource=ViewState[“Data”]作为DataTable;
}
}

根据我的要求,以下代码运行良好:

function onTextChange(sender, args) {
                var len = sender.get_text().length;
                //alert(len);

                var comboID = sender.get_id();
                var btnSearchID = comboID.replace("ddlAccountCode", "btnSearch");
                var btnCtrl = document.getElementById(btnSearchID);

                if (len >= 5) 
                {
                    btnCtrl.disabled = false;
                    //btnCtrl.style.display = "";
                }
                else 
                {
                    btnCtrl.disabled = true;
                    //btnCtrl.style.display = "none";
                }               
            }

谢谢你的答复。请注意,RadComboBox和按钮位于
RadGrid
EditItemTemplate
内。我尝试了你的代码,我得到了
警报(“dataItem:+dataItem”)为空/空。由于此
警报(长度)也为空。此外,我还尝试了另外一种方法(请检查我发布的问题中的编辑部分),在IF/ELSE中并没有禁用该按钮。请让我知道我错在哪里?请回复:因此,在您的代码中,当我在“for”循环中硬编码
length=5
时,我得到错误:
无法读取未定义的属性“findcontrol”
。请让我知道我的代码有什么问题?请回复更改您的
var btnCtrl=$get(btnSearchID)
var btnCtrl=$find(btnSearchID)。然后
findcontrol
区分大小写
findControl()
仅适用于
Telerik Control
。那你期望什么。。。上面的代码是启用的,下面是可见的,它是如何工作的…谢谢你的回复。我改变了
var btnCtrl=$find(btnSearchID)并且我在警报框中得到空值。在我的编辑中也做了更改。对于我的第二个答复,请忽略
findcontrol
(键入错误),它的
findcontrol
。请回答我应该在您的代码中更改什么(基于我的错误)以使其正常工作?nvm
findcontrol
您的按钮不是
telerik控件
,因此只需使用
document.getElementById(btnSearchID)然后
btnCtrl.disabled=false
btnCtrl.disabled=true
    <asp:FormView ID="fv" runat="server" DefaultMode="Insert" OnDataBound="fv_DataBound">
        <InsertItemTemplate>
            <telerik:RadMultiPage ID="RadMultiPage5" runat="server" 
             SelectedIndex="0" Width="100%">
                <telerik:RadPageView ID="RadPageView4" runat="server" Width="100%">
                    <telerik:RadAjaxPanel ID="RadAjaxPanel4" runat="server">
                        <telerik:RadGrid ID="RadGrid1" runat="server" 
                         AutoGenerateColumns="false" 
                         OnNeedDataSource="RadGrid1_NeedDataSource">
                            <MasterTableView>
                                <Columns>
                                    <telerik:GridTemplateColumn HeaderText="Acc">
                                        <ItemTemplate>
                                            <asp:Label ID="lbl" runat="server"
                                             Text='<%# Eval("Acc") %>'></asp:Label>
                                            <telerik:RadComboBox ID="ddlAccountCode" 
                                             runat="server" Height="200" Width="260"
                                             AllowCustomText="true" 
                                             OnClientTextChange="onTextChange">
                                                <Items>
                                                    <telerik:RadComboBoxItem Text="Gg" />
                                                    <telerik:RadComboBoxItem Text="Gg1" />
                                                    <telerik:RadComboBoxItem Text="Gg3" />
                                                </Items>
                                            </telerik:RadComboBox>
                                            <telerik:RadButton ID="btnSearch" runat="server" Text="Search" />
                                        </ItemTemplate>
                                    </telerik:GridTemplateColumn>
                                </Columns>
                            </MasterTableView>
                        </telerik:RadGrid>
                    </telerik:RadAjaxPanel>
                </telerik:RadPageView>
            </telerik:RadMultiPage>
        </InsertItemTemplate>
    </asp:FormView>
    <telerik:RadCodeBlock ID="rcb" runat="server">
        <script type="text/javascript">
            function onTextChange(sender, args) {
                var grid = $find('<%=fv.FindControl("RadGrid1").ClientID %>');
                var gridMasterData = grid.get_masterTableView();
                var dataItem = gridMasterData.get_dataItems();
                var length = dataItem.length;

                // Loop
                for (var i = 0; i < length; i++) {
                    // Find Control
                    var comboBox = dataItem[i].findControl("ddlAccountCode");

                    // Check
                    if (comboBox != undefined) {
                        if (sender.get_id() == comboBox.get_id()) {
                            // Find Button
                            var btn = dataItem[i].findControl("btnSearch");
                            var item = sender.get_text();

                            // Check
                            if (item.length > 5) {
                                if (btn != undefined) btn.set_visible(true);
                            }
                            else btn.set_visible(false);

                            break;
                        }
                        else
                            continue;
                    }
                }
            }
        </script>
    </telerik:RadCodeBlock>
protected void Page_Load(object sender, EventArgs e)
{
    // Check
    if (!IsPostBack)
    {
        // Variable
        DataTable dt = new DataTable();
        DataTable dt1 = new DataTable();
        dt.Columns.Add("Acc");

        dt1.Columns.Add("a");

        // Loop
        for (int i = 0; i < 2; i++)
            dt.Rows.Add("a " + i);

        dt1.Rows.Add("AAAA");



        ViewState["Data"] = dt;

        // Bind
        fv.DataSource = dt1;
        fv.DataBind();

        dt.Dispose();
        dt1.Dispose();
    }
}

protected void fv_DataBound(object sender, EventArgs e)
{
    // FindControl
    RadGrid RadGrid1 = fv.FindControl("RadGrid1") as RadGrid;

    // Check
    if (RadGrid1 != null)
    {
        RadGrid1.DataSource = ViewState["Data"] as DataTable;
        RadGrid1.DataBind();
    }
}

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    RadGrid rg = fv.FindControl("RadGrid1") as RadGrid;

    // Check
    if (rg != null)
    {
        rg.DataSource = ViewState["Data"] as DataTable;
    }
}
function onTextChange(sender, args) {
                var len = sender.get_text().length;
                //alert(len);

                var comboID = sender.get_id();
                var btnSearchID = comboID.replace("ddlAccountCode", "btnSearch");
                var btnCtrl = document.getElementById(btnSearchID);

                if (len >= 5) 
                {
                    btnCtrl.disabled = false;
                    //btnCtrl.style.display = "";
                }
                else 
                {
                    btnCtrl.disabled = true;
                    //btnCtrl.style.display = "none";
                }               
            }