radGrid控件不显示aspx页面中的数据

时间:2013-05-02 19:57:03

标签: asp.net telerik updatepanel radgrid

我有一个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">&nbsp;</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();
    }
}

2 个答案:

答案 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脚本。