Доступ к кнопке связи внутри Radgrid дает ошибку

Я пытаюсь получить доступ к Radgrid Control(LinkButton) из JavaScript. Я получаю неопределенную ошибку. Ниже мой javascript и radgrid. Radgrid находится внутри Radpanel, а также код, откуда я вызываю JavaScript.

<script>
 function warningMessage(rowIndex) {

            debugger;
            var dataItems = $find('<%= RadPanelBar1.Items[0].Items[0].FindControl("RadGrid_MCLIDPicker").ClientID %>').get_masterTableView().get_dataItems();

        -- getting null error in the above line    
            }

    </script>

И моя радгрид ниже

 <telerik:RadPanelBar ID="RadPanelBar1" runat="server" Width="1500px" BackColor="#E6E6E6"
    ExpandMode="MultipleExpandedItems">
    <Items>
        <telerik:RadPanelItem runat="server" Text="ID Picker" Expanded="true">
            <Items>
                <telerik:RadPanelItem Text="" Expanded="true">
                    <ItemTemplate>
                        <table>


                            <tr>
                                <td>
                                    <telerik:RadGrid ID="RadGrid_IDPicker" AllowSorting="false"  AllowPaging="false"
                                        runat="server" GridLines="None"  Width="1500px" Visible="false">
                                        <MasterTableView RetrieveAllDataFields="true" AutoGenerateColumns="false" DataKeyNames="ID" EnableViewState="true" ClientDataKeyNames="ID"  >
                                            <Columns>
                                                <telerik:GridTemplateColumn UniqueName="TemplateLinkColumn" AllowFiltering="false"
                                                    HeaderText="ID">
                                                    <ItemTemplate>

                                                        <asp:LinkButton ID="LinkButton1"  runat="server"  OnClick="ID_Link_Click" Text='<%#Bind("ID") %>'></asp:LinkButton>
                                                    </ItemTemplate>
                                                </telerik:GridTemplateColumn>

                                            </Columns>
                                        </MasterTableView>
                                        <PagerStyle Mode="NextPrevAndNumeric" />
                                    </telerik:RadGrid>
                                </td>
                            </tr>
                        </table>
                        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
                            <AjaxSettings>
                                <telerik:AjaxSetting AjaxControlID="radBtn_Search">
                                    <UpdatedControls>
                                        <telerik:AjaxUpdatedControl ControlID="RadGrid_IDPicker" LoadingPanelID="LoadingPanel1" />
                                    </UpdatedControls>
                                </telerik:AjaxSetting>

                                <telerik:AjaxSetting AjaxControlID="ID_Link">
                                    <UpdatedControls>
                                        <telerik:AjaxUpdatedControl ControlID="RadGrid_IDPicker" LoadingPanelID="LoadingPanel1" />
                                    </UpdatedControls>
                                </telerik:AjaxSetting>
                            </AjaxSettings>
                        </telerik:RadAjaxManager>
                    </ItemTemplate>
                </telerik:RadPanelItem>
            </Items>
        </telerik:RadPanelItem>
    </Items>     
</telerik:RadPanelBar>

Мой код позади

  protected void ID_Link_Click(object sender, EventArgs e)
     {
         try
         {

           LinkButton btn = (LinkButton)sender;
             GridDataItem row = (GridDataItem)btn.NamingContainer;
             ScriptManager.RegisterStartupScript(Page, this.GetType(), "message", string.Format("warningMessage('{0}');", row.ItemIndex), true);


}
catch()
{

3 ответа

Решение

Я должен был получить ссылку на Radpaelbar, и вот как я это сделал

   var dataItems = $find('<%= RadPanelBar1.Items[0].Items[0].FindControl     ("RadGrid_IDPicker").ClientID %>').get_masterTableView().get_dataItems();

Я сомневаюсь, что вам нужно получить ссылку на PanelBar, прежде чем вы сможете получить ссылку на RadGrid. Попробуйте сделать это просто:

var dataItems = 
$find('<%=RadGrid_IDPicker.ClientID%>').get_masterTableView().get_dataItems();

Я согласен с Icarus - я не думаю, что вам нужно получить ссылку на PanelBar для доступа к RadGrid. Если вам нужен доступ к этой кнопке связи, вы можете перебирать элементы данных, которые вы получаете. Вы можете попробовать сделать следующее:

var grid = $find("<%= RadGrid_IDPicker.ClientID %>");
var tbl = grid.get_masterTableView();
for (var i=0; i < tbl.get_dataItems().length; i++)
     var gridItemElem = tbl.get_dataItems()[i].findElement("LinkButton1");
Другие вопросы по тегам