0

私は基本的に RadGrid を持っており、RadGrid の内部には DetailTable があります。現在、DetailTable は展開されませんが、DetailTableDataBind イベントをデバッグすると、DataSource に割り当てられたデータがあることがわかります。DetailTableDataBind のすべてをコメント アウトすると、DetailTable は展開されますが、イベントをコメント アウトしたため、明らかに行データがありません。基本的に、RadGrid 内で使用された列 (この場合は「コメント」列) を DetailTable に表示する必要があります。

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

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 に答える
0

おそらく、最初にコメント フィールドをリストにキャストする必要がありますか?

于 2013-01-11T08:32:37.090 に答える
0

この背後にある理由は、DetailTable の名前が RadGrid の ID と同じだったからです。DetailTable の名前を変更したところ、機能するようになりました。

于 2013-01-11T12:57:45.377 に答える