我有一个asp.net应用程序(由前一个开发人员创建),它使用RadGrid控件来显示数据。但是,如果页面上有一个数据,RadGrid不会显示数据。我删除UpdatePanel后,radGrid很快就能正常工作。如果我删除Updatepanel,那么RadCombobox会提交整个页面(而不是使用Ajax)。
有没有让radGrid和一起工作?
<asp:UpdatePanel ID="upnlFilter" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<span class="subHeader">VTRIP Log Search: </span>
<asp:Panel ID="Panel1" runat="server" BorderColor="#E3B391" BorderStyle="Solid"
BorderWidth="1" Width="994px">
<div style="height:10px; width:994px">
</div>
<table style="width: 974px; margin: 10px" border="0">
<tr>
<td width="200px">
<telerik:RadComboBox ID="DriverDD" runat="server" Height="120px" Width="180px"
DropDownWidth="180px" EmptyMessage="Choose a Driver"
HighlightTemplatedItems="true" AutoPostBack="true"
AppendDataBoundItems="true"
onselectedindexchanged="DriverDD_SelectedIndexChanged" >
</telerik:RadComboBox>
</td>
<td width="220px">
<asp:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" TargetControlID="txtDOS"
WatermarkText="Select today or any previous day" WatermarkCssClass="watermarked">
</asp:TextBoxWatermarkExtender>
<asp:TextBox ID="txtDOS" runat="server" Width="200px" EnableViewState="true" CssClass="SetTextbox"
Height="20px" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"></asp:TextBox>
<asp:CalendarExtender ID="txtDOS_CalendarExtender" runat="server" Enabled="True"
TargetControlID="txtDOS">
</asp:CalendarExtender>
</td>
<td style="width:350px"> </td>
</tr>
</table>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<br/>
<telerik:RadGrid ID="RadGrid1" OnSortCommand="RadGrid1_SortCommand"
OnPageIndexChanged="RadGrid1_PageIndexChanged"
Width="99%" Height="181px" OnPageSizeChanged="RadGrid1_PageSizeChanged" AllowSorting="True"
PageSize="5" AllowPaging="True" AllowMultiRowSelection="True" runat="server"
GridLines="None" AutoGenerateColumns="False">
<MasterTableView Height="100px" Width="100%" Summary="RadGrid table">
<CommandItemSettings ExportToPdfText="Export to PDF" />
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"
Visible="True">
</RowIndicatorColumn>
<ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"
Visible="True">
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="TripId" HeaderText="Trip ID" SortExpression="TripID"
UniqueName="TripID"
SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="MemberName" HeaderText="Member Name" SortExpression="MemberName"
UniqueName="MemberName"
SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="VehicleType" HeaderText="Vehicle Type" SortExpression="VehicleType"
UniqueName="VehicleType"
SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Status" HeaderText="Status" SortExpression="Status"
UniqueName="Status"
SortAscImageUrl="SortAsc.gif" SortDescImageUrl="SortDesc.gif">
</telerik:GridBoundColumn>
</Columns>
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column">
</EditColumn>
</EditFormSettings>
<PagerStyle PageSizeControlType="RadComboBox" />
</MasterTableView>
<PagerStyle Mode="NextPrevAndNumeric"></PagerStyle>
<FilterMenu EnableImageSprites="False">
</FilterMenu>
</telerik:RadGrid>
代码背后:(使用Grid - Simple Data Binding填充网格)
private void LoadData()
{
if (Session["TripMaster"] != null)
{
RadGrid1.DataSource = Session["TripMaster"];
RadGrid1.DataBind();
}
}
答案 0 :(得分:2)
您可以在RadGrid
内移动UpdatePanel
并再试一次吗?
<asp:UpdatePanel ID="upnlFilter" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<span class="subHeader">VTRIP Log Search: </span>
<asp:Panel
....
</asp:Panel>
<br/>
<telerik:RadGrid
....
</telerik:RadGrid>
</ContentTemplate>
</asp:UpdatePanel>
答案 1 :(得分:2)
您也可以使用RadAjaxManager为您执行此操作,并且您将看不到AjaxPanel中所有项目的完整回发和呈现。我们建议采用这种方法,因为它可以减少对页面的控制,并更有针对性地更新控件。
删除UpdatePanel并将RadAjaxManager添加到您的页面,并添加以下标记:
<telerik:RadAjaxManager runat="server" ID="ajaxMgr">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="DriverDD">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
...你应该看到相同的结果,需要担心更少的标记和事件。
最后,如果您使用的是2013年Q1 AJAX controls,我建议您将RadComboBox更改为RadDropDownList。当您提供标准组合框时,此控件的标记显着减少。从此控件中减轻生成的HTML的另一个选项是添加RenderMode="Lightweight"
属性,以使其生成现代浏览器支持的较小HTML脚本。