我基本上有一个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;
}
如果有更好的方法,请告诉我。
答案 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++;
}