RadGrid中的DetailTables没有扩展

时间:2013-01-11 08:23:17

标签: c# asp.net telerik radgrid

我基本上有一个RadGrid,RadGrid里面是一个DetailTable。现在DetailTable不会扩展,但是当我调试DetailTableDataBind事件时,我看到有数据分配给DataSource。如果我注释掉DetailTableDataBind中的所有内容,那么DetailTable会扩展,但显然没有任何行数据,因为我已经注释掉了该事件。基本上我希望DetailTable显示在RadGrid中使用的列,在这种情况下是“注释”列。

为什么当我尝试分配一个DetailTable不会扩展的数据源时?

以下是一些代码片段。

aspx页面

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="MemberCommentsGrid">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="MemberCommentsGrid" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>


<telerik:RadGrid ID="MemberCommentsGrid" runat="server" AutoGenerateColumns="false"
     AllowPaging="true" PageSize="20" ShowStatusBar="true" OnDetailTableDataBind="MemberCommentsGrid_DetailTableDataBind" Skin="WebBlue">
    <ClientSettings AllowExpandCollapse="true">    
    </ClientSettings>
    <MasterTableView AllowMultiColumnSorting="true" DataKeyNames="MemberCommentID">
        <Columns>            
            <telerik:GridBoundColumn DataField="MemberCommentID" HeaderText="Comment ID">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Comment" HeaderText="Comment Text">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="DateAdded" HeaderText="Date Added">
            </telerik:GridBoundColumn>                
            <telerik:GridBoundColumn DataField="UserID" HeaderText="Comment Created By">
            </telerik:GridBoundColumn>       
        </Columns>
        <DetailTables>
            <telerik:GridTableView Name="MemberCommentsGrid" DataKeyNames="MemberCommentID" runat="server" AutoGenerateColumns="false">
                <Columns>
                <telerik:GridBoundColumn DataField="Comment" HeaderText="Full ID">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="Comment" HeaderText="Full Comment">
                    </telerik:GridBoundColumn>
                </Columns>
            </telerik:GridTableView>
        </DetailTables>
    </MasterTableView>
    </telerik:RadGrid>

cs页面

protected void Page_Load(object sender, EventArgs e)
    {
        #region Getting DataTable data
        string memberName = string.Empty;                       

        if (!IsPostBack)
        {
            if (Request.QueryString["MemName"] != null)
                memberName = Request.QueryString["MemName"].ToString();
            else
                Response.Redirect("../Account/Login.aspx");



            using (AcquirerPortal.Data.MemberComments mc = new AcquirerPortal.Data.MemberComments())
            {
                dtMemberComments = mc.GetMemberComments(Members.GetMemberIDByMemberName(memberName));
            }


        }
        #endregion

        MemberCommentsGrid.DataSource = dtMemberComments;
        MemberCommentsGrid.DataBind();
    }

    protected void MemberCommentsGrid_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
    {
        e.DetailTableView.DataSource = e.DetailTableView.ParentItem["Comment"].Text;
    }

如果有更好的方法,请告诉我。

3 个答案:

答案 0 :(得分:0)

也许首先需要将注释字段强制转换为列表?

答案 1 :(得分:0)

好吧,其背后的原因是DetailTable的名称与RadGrid的ID相同。我刚刚更改了DetailTable的名称,现在它可以正常工作。

答案 2 :(得分:0)

这是在RadGrid上展开详细信息表的另一种方法。

// expand all of the rows on the page

int counter = 0;

int NoOfRows = Pages.PAPage.ApptsTableGrid.Rows.Count;

for (i=0;i<NoOfRows;i++)

{ 

    HtmlTableRow gRow = Pages.PAPage.ApptsTableGrid.Rows[counter + i];

    foreach(HtmlTableCell gCell in gRow.Cells) 

    {    

        if(gCell.CssClass=="rgExpandCol")

        { 

            gCell.MouseClick();  

            ActiveBrowser.RefreshDomTree();

            System.Threading.Thread.Sleep(1000); 

        }  

    }

    counter++; 

}