【发布时间】:2016-10-19 04:09:29
【问题描述】:
我需要在某些列上创建一个包含多个组的网格,我的代码是
<telerik:RadGrid Skin="MetroTouch" ID="grdQuestionnaire" RenderMode="Lightweight" runat="server"
AllowMultiRowSelection="True" AllowPaging="True" ShowGroupPanel="False"
AutoGenerateColumns="False" GridLines="none"
showchooser="true"
OnItemCommand="grdQuestionnaire_ItemCommand"
OnNeedDataSource="grdQuestionnaire_NeedDataSource"
OnItemDataBound="grdQuestionnaire_ItemDataBound"
OnDetailTableDataBind="grdQuestionnaire_DetailTableDataBind">
<GroupingSettings ShowUnGroupButton="false"></GroupingSettings>
<MasterTableView GroupLoadMode="Client" NoMasterRecordsText="No Question Added" TableLayout="Fixed" DataKeyNames="QuestionId,QuestionCode,LanguageQ">
<DetailTables >
<telerik:GridTableView NoDetailRecordsText="No Options Added" Name="Options" Width="100%">
<Columns>
<telerik:GridBoundColumn SortExpression="OptionDesc" HeaderText="Option" HeaderButtonType="TextButton"
DataField="OptionDesc">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="OptionWeightage" HeaderText="Weightage" HeaderButtonType="TextButton"
DataField="OptionWeightage">
</telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<GroupByExpressions>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldAlias="WorkshopName" FieldName="WorkshopName" HeaderText="Workshop"></telerik:GridGroupByField>
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldName="WorkshopCode"></telerik:GridGroupByField>
</GroupByFields>
</telerik:GridGroupByExpression>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldAlias="" FieldName="AssessmentType" HeaderText="Type"></telerik:GridGroupByField>
<telerik:GridGroupByField FieldAlias="QuestionnaireDesc" FieldName="QuestionnaireDesc" HeaderText="Description" FormatString=""></telerik:GridGroupByField>
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldName="QuestionnaireCode"></telerik:GridGroupByField>
</GroupByFields>
</telerik:GridGroupByExpression>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldAlias="QuestionCode" FieldName="QuestionCode" HeaderText="Question">
</telerik:GridGroupByField>
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldName="QuestionCode"></telerik:GridGroupByField>
</GroupByFields>
</telerik:GridGroupByExpression>
</GroupByExpressions>
<Columns>
<telerik:GridBoundColumn DataField="QuestionDesc" HeaderText="Question"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="QuestionWeightage" HeaderText="Weightage"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LanguageQ" HeaderText="Language"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="CreatedBy" HeaderText="Created By"></telerik:GridBoundColumn>
<telerik:GridTemplateColumn HeaderText="Action" UniqueName="colAction">
<HeaderStyle HorizontalAlign="Left" Font-Bold="false" VerticalAlign="NotSet" />
<ItemTemplate>
<asp:LinkButton ID="addOption" CommandName="addNewOption" runat="server" CssClass="btn btn-info">Add Options</asp:LinkButton>
<asp:LinkButton ID="deleteQuestion" CommandName="deletequestion" runat="server" CssClass="btn btn-danger">Delete</asp:LinkButton>
</ItemTemplate>
<HeaderStyle Font-Bold="True" />
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
-
我有一个场景,我需要显示带有 groups 的按钮 - 这部分是通过订阅事件完成的 OnItemDataBound
protected void grdQuestionnaire_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridGroupHeaderItem) { GridGroupHeaderItem hi = (GridGroupHeaderItem)e.Item; DataRowView groupDataRow = (DataRowView)e.Item.DataItem; DataRowView drv = ((DataRowView)e.Item.DataItem); string columnname = drv.DataView.Table.Columns[0].ColumnName; switch (columnname) { case "WorkshopName": { LinkButton btn = new LinkButton(); btn.Text = "Add workshop"; // btn.OnClientClick = "if (!confirm('Are you sure you all information is correct for this employee?')) return false;"; btn.CssClass = "btn btn-sm btn-info"; btn.Style.Add(HtmlTextWriterStyle.MarginRight, "0px"); btn.CommandName = "AddWorkshop"; TableCell customcell = new TableCell(); customcell.Controls.Add(btn); hi.Cells.Add(customcell); hi.Cells[hi.Cells.Count - 2].ColumnSpan = hi.Cells[hi.Cells.Count - 2].ColumnSpan - 1; break; } case "QuestionCode": { LinkButton btn = new LinkButton(); btn.Text = "Add question"; btn.CssClass = "btn btn-sm btn-success"; btn.Style.Add(HtmlTextWriterStyle.MarginRight, "0px"); btn.CommandName = "AddQuestion"; TableCell customcell = new TableCell(); customcell.Controls.Add(btn); hi.Cells.Add(customcell); hi.Cells[hi.Cells.Count - 2].ColumnSpan = hi.Cells[hi.Cells.Count - 2].ColumnSpan - 1; break; } } } }
-
在扩展时,表格来自我从以下 event OnDetailTableDataBind
添加的其他数据表protected void grdQuestionnaire_DetailTableDataBind(object sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e) { GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem; string n = e.DetailTableView.Name; string QuestionCode = dataItem.GetDataKeyValue("QuestionCode").ToString(); string Language = dataItem.GetDataKeyValue("LanguageQ").ToString(); DataSet ds = clsQuestionnaireDAC.GetOptions(QuestionCode, Language); e.DetailTableView.DataSource = ds.Tables[0]; }
我不知道为什么在展开表格时会出现问题,我的自定义按钮 神秘地消失并搁置了网格。这是展开明细表后的结果 任何人都可以指导我解决这种情况,以防止我的 MasterTableView 在扩展之前保持原样。
【问题讨论】:
-
您尝试过使用
RadAjaxPanel吗?因为每次您展开主视图时,页面都会发回,导致您的列重置。
标签: c# asp.net webforms telerik radgrid