访问 radgrid 内的链接按钮出现错误

发布于 2024-12-28 03:51:30 字数 4213 浏览 4 评论 0原文

我正在尝试从 javascript 访问 radgrid control(linkbutton)。我收到一个空定义的错误。下面是我的 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()
{

I am trying to access radgrid control(linkbutton) from javascript. I am getting a null defined error. Below is my javascript and radgrid. radgrid is inside the radpanel and also the code behind from where I am invoking the 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>

And my radgrid is below

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

My code behind is

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哀由 2025-01-04 03:51:30

我必须获得 radpaelbar 的参考,这就是我所做的

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

I had to get the reference of the radpaelbar and this is how I did it

   var dataItems = $find('<%= RadPanelBar1.Items[0].Items[0].FindControl     ("RadGrid_IDPicker").ClientID %>').get_masterTableView().get_dataItems();
捎一片雪花 2025-01-04 03:51:30

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

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

I doubt that you need to get a reference to the PanelBar before you can get a reference to the RadGrid. Try doing simply this:

var dataItems = 
$find('<%=RadGrid_IDPicker.ClientID%>').get_masterTableView().get_dataItems();
小忆控 2025-01-04 03:51:30

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

I agree with Icarus -- I don't think that you need to get a reference to the PanelBar to access the RadGrid. If you need to access that linkbutton, you can loop through the dataItems that you get. You can try to do the following:

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");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文