0

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

为什么当我尝试分配 DetailTable 不会扩展的 DataSource 时?

以下是一些代码片段。

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

如果有更好的方法可以做到这一点,请告诉我。

4

3 回答 3

0

也许评论字段需要先转换为列表?

于 2013-01-11T08:32:37.090 回答
0

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

于 2013-01-11T12:57:45.377 回答
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++; 

} 
于 2014-05-16T17:14:47.880 回答