Доступ к кнопке связи внутри 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");