2012-01-19 22 views
0

我想从javascript访问radgrid控件(linkbutton)。我得到一个null定义的错误。下面是我的javascript和radgrid。 radgrid是在radpanel里面的,也是我调用javascript的代码。访问radgrid内的链接给出错误

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

回答

1

我必须得到radpaelbar的参考,这是我是如何做到的

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

我怀疑,你需要去的PanelBar一个引用之前,你可以得到的一个参考radgrid控件。尝试干这个:

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

我同意伊卡洛斯 - 我不认为你需要得到一个引用到PanelBar访问RadGrid。如果你需要访问那个链接按钮,你可以遍历你得到的dataItem。你可以尝试做如下:

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"); 
相关问题