编辑后如何在 GridPanel 中显示一对多相关列?
情况概述
我正在使用 Ext.NET GridPanel 来显示项目列表,其中包含分配给某些用户的任务(我称之为 Sprint)和状态。所以我得到了这种关系:
SprintOwner -> UserID
SprintStatus -> SprintStatusID
在我的 GridPanel 中,我显示按项目分组的冲刺,并使用关系以显示其名称而不是 ID(SprintStatusName 和 UserName)。它是葡萄牙语的,但我发现显示它很有用:
按此顺序我有名称、状态和 SprintOwner我可以编辑所有内容。
问题
在 Status 和 SprintOwner 中,我有一个组合框,其值与 ID 关联。编辑它后,网格会更新我的数据库并再次渲染数据,但它不会显示名称,而是显示值(ID),如下所示:
我怎样才能让它再次显示他们的名字?
因此我的 Page_Load
方法
Dim db As New ProjectManagerDataContext
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
' Retorna as sprints do banco de dados
ProjectsStore.DataSource = From sp In db.Sprints _
Select New With { _
.ID = sp.SprintID, _
.Name = sp.SprintName, _
.ProjectName = "[" & sp.Project.ProjectGroup1.ProjectGroupName & "] " & sp.Project.ProjectName, _
.Status = sp.SprintStatus1.SprintStatusName, _
.Owner = sp.User.UserName, _
.BeginDate = sp.SprintBegin, _
.EndDate = sp.SprintEnd, _
.RealEnd = sp.SprintRealEnd}
ProjectsStore.DataBind()
Store2.DataSource = From ss In db.SprintStatus _
Select New With { _
.StatusID = ss.SprintStatusID, _
.StatusName = ss.SprintStatusName}
Store2.DataBind()
Store3.DataSource = (From u In db.Users _
Select New With { _
.DeveloperName = u.UserName, _
.DeveloperID = u.UserID})
Store3.DataBind()
End If
End Sub
[已编辑]
和我的 .asp:
<ext:GridPanel
ID="grdProjects"
runat="server"
AutoHeight="true"
EnableColumnMove="false"
Collapsible="false"
AnimCollapse="true"
StripeRows="true"
Title="Projetos" >
<Store>
<ext:Store ID="ProjectsStore" runat="server" GroupField="ProjectName">
<Reader>
<ext:JsonReader IDProperty="ID">
<Fields>
<ext:RecordField Name="ProjectName" Type="String" />
<ext:RecordField Name="ID" Type="Int" />
<ext:RecordField Name="Name" Type="String" />
<ext:RecordField Name="Status" Type="String" />
<ext:RecordField Name="Owner" Type="String" />
<ext:RecordField Name="Begin" Type="Date" />
<ext:RecordField Name="End" Type="Date" />
<ext:RecordField Name="RealEnd" Type="Date" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
<Listeners>
<AfterEdit Fn="afterEdit" />
</Listeners>
<ColumnModel ID="ColumnModel20" runat="server">
<Columns>
<ext:Column ColumnID="SprintProject" Header="Projeto" Align="Left" DataIndex="ProjectName" />
<ext:Column ColumnID="SprintName" Header="Nome" Align="Left" DataIndex="Name" />
<ext:Column ColumnID="SprintStatus" Header="Status" Align="Left" DataIndex="Status">
<Editor>
<ext:SelectBox
ID="selStatus"
runat="server"
DisplayField="StatusName"
ValueField="StatusID"
EmptyText="Selecione um status">
<Store>
<ext:Store ID="Store2" runat="server">
<Reader>
<ext:JsonReader IDProperty="StatusID">
<Fields>
<ext:RecordField Name="StatusID" Type="Int" />
<ext:RecordField Name="StatusName" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
</ext:SelectBox>
</Editor>
</ext:Column>
<ext:Column ColumnID="SprintOwner" Header="Recurso" Align="Left" DataIndex="Owner">
<Editor>
<ext:SelectBox
ID="selDevelopers"
runat="server"
DisplayField="DeveloperName"
ValueField="DeveloperID"
EmptyText="Selecione um recurso">
<Store>
<ext:Store ID="Store3" runat="server">
<Reader>
<ext:JsonReader IDProperty="DeveloperID">
<Fields>
<ext:RecordField Name="DeveloperID" Type="Int" />
<ext:RecordField Name="DeveloperName" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
</ext:SelectBox>
</Editor>
</ext:Column>
<ext:DateColumn ColumnID="SprintBegin" Header="Data de início" Align="Center" DataIndex="Begin" Format="dd/MM/yyyy">
<Editor>
<ext:DateField Format="dd/MM/yyyy" runat="server" />
</Editor>
</ext:DateColumn>
<ext:DateColumn ColumnID="SprintEnd" Header="Previsão de término" Align="Center" DataIndex="End" Format="dd/MM/yyyy">
<Editor>
<ext:DateField Format="dd/MM/yyyy" runat="server" />
</Editor>
</ext:DateColumn>
<ext:DateColumn ColumnID="SprintRealEnd" Header="Data de término" Align="Center" DataIndex="RealEnd" Format="dd/MM/yyyy">
<Editor>
<ext:DateField Format="dd/MM/yyyy" runat="server" />
</Editor>
</ext:DateColumn>
</Columns>
</ColumnModel>
<View>
<ext:GroupingView SplitHandleWidth="10"
runat="server"
ForceFit="true"
MarkDirty="false"
ShowGroupName="false"
EnableNoGroups="true"
HideGroupedColumn="true" ID="ctl222" />
</View>
</ext:GridPanel>
Situation Overview
I'm using Ext.NET GridPanel
to display a list of projects which has tasks (i call it Sprints) inside it assigned to some user and a status. So I get this kind of relation:
SprintOwner -> UserID
SprintStatus -> SprintStatusID
In my GridPanel I display my sprints grouped by projects and I use the relationships to show their names instead of their IDs (SprintStatusName and UserName). It's in portuguese but I find it useful to show:
In this order I have Name, Status and the SprintOwner and I can edit it all.
The problem
In Status and SprintOwner I have a comboBox which value is associated with IDs. Once I edit it, the grid updates my database and render the data again, but instead of showing the names, it shows the value (IDs) like this:
How can I make it show their names again?
Hence my Page_Load
method
Dim db As New ProjectManagerDataContext
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
' Retorna as sprints do banco de dados
ProjectsStore.DataSource = From sp In db.Sprints _
Select New With { _
.ID = sp.SprintID, _
.Name = sp.SprintName, _
.ProjectName = "[" & sp.Project.ProjectGroup1.ProjectGroupName & "] " & sp.Project.ProjectName, _
.Status = sp.SprintStatus1.SprintStatusName, _
.Owner = sp.User.UserName, _
.BeginDate = sp.SprintBegin, _
.EndDate = sp.SprintEnd, _
.RealEnd = sp.SprintRealEnd}
ProjectsStore.DataBind()
Store2.DataSource = From ss In db.SprintStatus _
Select New With { _
.StatusID = ss.SprintStatusID, _
.StatusName = ss.SprintStatusName}
Store2.DataBind()
Store3.DataSource = (From u In db.Users _
Select New With { _
.DeveloperName = u.UserName, _
.DeveloperID = u.UserID})
Store3.DataBind()
End If
End Sub
[EDITED]
And my .asp:
<ext:GridPanel
ID="grdProjects"
runat="server"
AutoHeight="true"
EnableColumnMove="false"
Collapsible="false"
AnimCollapse="true"
StripeRows="true"
Title="Projetos" >
<Store>
<ext:Store ID="ProjectsStore" runat="server" GroupField="ProjectName">
<Reader>
<ext:JsonReader IDProperty="ID">
<Fields>
<ext:RecordField Name="ProjectName" Type="String" />
<ext:RecordField Name="ID" Type="Int" />
<ext:RecordField Name="Name" Type="String" />
<ext:RecordField Name="Status" Type="String" />
<ext:RecordField Name="Owner" Type="String" />
<ext:RecordField Name="Begin" Type="Date" />
<ext:RecordField Name="End" Type="Date" />
<ext:RecordField Name="RealEnd" Type="Date" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
<Listeners>
<AfterEdit Fn="afterEdit" />
</Listeners>
<ColumnModel ID="ColumnModel20" runat="server">
<Columns>
<ext:Column ColumnID="SprintProject" Header="Projeto" Align="Left" DataIndex="ProjectName" />
<ext:Column ColumnID="SprintName" Header="Nome" Align="Left" DataIndex="Name" />
<ext:Column ColumnID="SprintStatus" Header="Status" Align="Left" DataIndex="Status">
<Editor>
<ext:SelectBox
ID="selStatus"
runat="server"
DisplayField="StatusName"
ValueField="StatusID"
EmptyText="Selecione um status">
<Store>
<ext:Store ID="Store2" runat="server">
<Reader>
<ext:JsonReader IDProperty="StatusID">
<Fields>
<ext:RecordField Name="StatusID" Type="Int" />
<ext:RecordField Name="StatusName" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
</ext:SelectBox>
</Editor>
</ext:Column>
<ext:Column ColumnID="SprintOwner" Header="Recurso" Align="Left" DataIndex="Owner">
<Editor>
<ext:SelectBox
ID="selDevelopers"
runat="server"
DisplayField="DeveloperName"
ValueField="DeveloperID"
EmptyText="Selecione um recurso">
<Store>
<ext:Store ID="Store3" runat="server">
<Reader>
<ext:JsonReader IDProperty="DeveloperID">
<Fields>
<ext:RecordField Name="DeveloperID" Type="Int" />
<ext:RecordField Name="DeveloperName" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
</ext:SelectBox>
</Editor>
</ext:Column>
<ext:DateColumn ColumnID="SprintBegin" Header="Data de início" Align="Center" DataIndex="Begin" Format="dd/MM/yyyy">
<Editor>
<ext:DateField Format="dd/MM/yyyy" runat="server" />
</Editor>
</ext:DateColumn>
<ext:DateColumn ColumnID="SprintEnd" Header="Previsão de término" Align="Center" DataIndex="End" Format="dd/MM/yyyy">
<Editor>
<ext:DateField Format="dd/MM/yyyy" runat="server" />
</Editor>
</ext:DateColumn>
<ext:DateColumn ColumnID="SprintRealEnd" Header="Data de término" Align="Center" DataIndex="RealEnd" Format="dd/MM/yyyy">
<Editor>
<ext:DateField Format="dd/MM/yyyy" runat="server" />
</Editor>
</ext:DateColumn>
</Columns>
</ColumnModel>
<View>
<ext:GroupingView SplitHandleWidth="10"
runat="server"
ForceFit="true"
MarkDirty="false"
ShowGroupName="false"
EnableNoGroups="true"
HideGroupedColumn="true" ID="ctl222" />
</View>
</ext:GridPanel>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我必须看看如何配置
Store
Reader
和GridPanel
Columns
以确定到底出了什么问题。以下示例应该会有所帮助,它演示了类似的场景,并且可用于对代码进行故障排除。示例
希望这有帮助。
I'd have to see how you
Store
Reader
andGridPanel
Columns
are configured to determine exactly what is going wrong. The following sample should be helpful at it demonstrates a similar scenario and can be used to troubleshoot your code.Example
Hope this helps.