【问题标题】:accessing a linkbutton inside the radgrid giving error访问 radgrid 中的链接按钮给出错误
【发布时间】:2012-01-19 15:50:26
【问题描述】:

我正在尝试从 javascript 访问 radgrid 控件(链接按钮)。我收到一个空定义的错误。下面是我的 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>

我的 radgrid 在下面

 <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()
{

【问题讨论】:

    标签: asp.net telerik radgrid


    【解决方案1】:

    我必须得到 radpaelbar 的参考,我就是这样做的

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

    【讨论】:

      【解决方案2】:

      我怀疑您是否需要先获得对 PanelBar 的引用才能获得对 RadGrid 的引用。尝试这样做:

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

      【讨论】:

        【解决方案3】:

        我同意 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");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-10
          • 1970-01-01
          • 1970-01-01
          • 2014-05-09
          • 2022-01-17
          • 1970-01-01
          • 2014-11-12
          相关资源
          最近更新 更多