简体   繁体   English

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

[英]Error: The name 'RGGSTAcCode' does not exist in the current context

In one of the webpage, I have RadGrid inside FormView Control ie, as below markup:在其中一个网页中,我在FormView控件中有RadGrid即,如下标记:

<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>

Now, I try to get the RadGrid -- EditItemTemplate -- Button control inside JavaScript to make it visible true/false based on text length that user enter in RadComboBox .现在,我尝试在 JavaScript 中获取RadGrid -- EditItemTemplate -- Button控件,以根据用户在RadComboBox输入的文本长度使其可见真/假。

Below is my JavaScript:下面是我的 JavaScript:

<script lang="javascript" type="text/javascript">
        function OnClientTextChange(sender, eventArgs) {
            //alert("You typed " + sender.get_text());

            var len = sender.get_text().length;
            alert(len);

            var form = $find("<%#RGGSTAcCode.ClientID%>").get_masterTableView();
            alert(form);

        }
</script>

When I run my web page, I always get below error :当我运行我的网页时,我总是收到以下错误

The name 'RGGSTAcCode' does not exist in the current context当前上下文中不存在名称“RGGSTAcCode”

I tried to change the JavaScript code as below:我尝试更改 JavaScript 代码如下:

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

but then I get [object Object] in "alert".但是后来我在“警报”中得到了[object Object] What is wrong in my code?我的代码有什么问题?

Edit编辑

Tried below solution, all working except Buttons are not disabled/enabled inside if/else:在下面的解决方案中尝试过,除 Buttons 之外的所有工作都没有在 if/else 中禁用/启用:

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

                var comboID = sender.get_id();
                var btnSearchID = comboID.replace("ddlAccountCode", "btnSearch");
                alert("Alert 1: " + btnSearchID); //getting : contentplaceholder_fviIPRForm_RGGSTAcCode_btnSearch

                var btnCtrl = $get(btnSearchID);
                alert("Alert 2: " + btnCtrl); //getting : [object HTMLInputElement]

                if (len > 5) 
                {
                    alert("greater");

                    btnCtrl.set_enabled(true);
                    btnsearch.set_enabled(true); // enable search button                    
                }
                else 
                {
                    alert("less");

                    btnCtrl.set_enabled(false);
                    btnsearch.set_enabled(false); // disable search button                   
                }               
            }

This might be the answer you want....这可能就是你想要的答案......
Not the best but is working..不是最好的,但正在工作..

.aspx .aspx

    <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>

Javascript 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>

.cs 。CS

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;
    }
}

Below code is working fine based on my requirement:根据我的要求,下面的代码工作正常:

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";
                }               
            }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误名称“标识符”在当前上下文中不存在 - Error The name 'Identifier' does not exist in the current context 在asp.net中,当前上下文错误中不存在名称“Url” - The name 'Url' does not exist in the current context error in asp.net “ClientScript”这个名称在当前上下文中不存在 - The name 'ClientScript' does not exist in the current context 名称“功能”在当前上下文中不存在 - The name '“function” does not exist in the current context 名称“ ui”在当前上下文中不存在 - The name 'ui' does not exist in the current context “ScriptManager”名称在当前上下文中不存在 - The name 'ScriptManager' does not exist in the current context 名称“内容”在当前上下文中不存在 - The name 'content' does not exist in the current context 名字 &#39; <name> 在MVC 4.0的当前上下文中不存在&#39; - The name '<name>' does not exist in the current context on MVC 4.0 对于For Java Script C#Web App,当前上下文中的名称“ serializer”不存在。 - The name 'serializer' does not exist in the current context Master Page Error in For Java Script C# Web App CS0103:名称“”在当前上下文中不存在(javascript) - CS0103: The name ' ' does not exist in the current context (javascript)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM