我试图在另一个 GridView 内的 GridView 中编辑值。我可以编辑第一个 GridView 上的值,但是当我在子 GridView 上点击“编辑”时,除了回发之外什么都没有发生。
我的 GridView 结构如下:
<asp:GridView ID="gwProperties" runat="server" Width="100%"
onrowediting="gwProperties_RowEditing" AutoGenerateColumns="False"
DataKeyNames="Name,IsActive"
onrowcancelingedit="gwProperties_RowCancelingEdit"
onrowdeleting="gwProperties_RowDeleting"
ShowFooter="True" onrowupdating="gwProperties_RowUpdating">
<FooterStyle BackColor="#20334F" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="green" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:CommandField ShowEditButton="true" EditText="Ret" UpdateText="Gem" CancelText="Annuller" />
<asp:BoundField DataField="Name" HeaderText="Navn" SortExpression="Name" />
<asp:TemplateField HeaderText="Aktiv" SortExpression="IsActive" Visible="true">
<ItemTemplate>
<asp:Label runat="server" ID="Label2" Text='<%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Aktiv" : "Inaktiv" %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox runat="server" ID="cbIsPropertyActive" Checked='<%# Bind("IsActive") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
</td>
</tr>
<tr>
<td colspan="100%">
<asp:GridView DataKeyNames="StreetName,Zip,City,Country" runat="server" ID="gwAddresses" Width="100%" AutoGenerateColumns="false" DataSource='<%#Eval("Addresses") %>' OnRowEditing="gwAddresses_RowEditing">
<Columns>
<asp:TemplateField HeaderText="Vejnavn">
<ItemTemplate>
<asp:Label runat="server" ID="lblStreetName" Text='<%# Bind("StreetName") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtStreetName" Text='<%# Bind("StreetName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" EditText="Ret" UpdateText="Gem" CancelText="Annuller" />
<asp:BoundField DataField="Zip" HeaderText="Postnummer" SortExpression="Zip" />
<asp:BoundField DataField="City" HeaderText="By" SortExpression="City" />
<asp:BoundField DataField="Country" HeaderText="Land" SortExpression="Country" />
<asp:TemplateField>
<ItemTemplate>
</td>
</tr>
<tr>
<td colspan="100%">
<asp:GridView runat="server" ID="gwStreetNumbers" Width="100%" AutoGenerateColumns="false" DataSource='<%#Eval("StreetNumbers") %>' OnRowEditing="gwAddresses_RowEditing">
<Columns>
<asp:BoundField DataField="Number" HeaderText="Nummer" SortExpression="Number" />
<asp:BoundField DataField="Letter" HeaderText="Bogstav" SortExpression="Letter" />
<asp:TemplateField>
<ItemTemplate>
</td>
</tr>
<tr>
<td colspan="100%">
<asp:GridView runat="server" ID="gwPrivateLeases" Width="100%" AutoGenerateColumns="false" DataSource='<%#Eval("LeaseTypes.PrivateLeases") %>' OnRowEditing="gwAddresses_RowEditing">
<Columns>
<asp:TemplateField HeaderText="Aktiv">
<ItemTemplate>
<asp:Label runat="server" ID="lblIsLeaseActive" Text='<%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Aktiv" : "Inaktiv" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TakeoverDate" HeaderText="Overtagelsesdato" SortExpression="TakeoverDate" />
<asp:BoundField DataField="Floor" HeaderText="Sal" SortExpression="Floor" />
<asp:BoundField DataField="Side" HeaderText="Side" SortExpression="Side" />
<asp:BoundField DataField="Regulating" HeaderText="Regulering" />
<asp:HyperLinkField DataNavigateUrlFields="Prospect" HeaderText="Prospekt" />
<asp:HyperLinkField DataNavigateUrlFields="FloorPlanDrawing" HeaderText="Plantegning" />
<asp:BoundField DataField="LeasingPeriod" HeaderText="Lejeperiode" />
<asp:BoundField DataField="SquareMetre" HeaderText="Kvadratmeter" />
<asp:BoundField DataField="Rent" HeaderText="Husleje" />
<asp:BoundField DataField="NumberOfRooms" HeaderText="Antal værelser" />
<asp:BoundField DataField="ACConsumption" HeaderText="A/C forbrug" />
<asp:BoundField DataField="PaymentInAdvance" HeaderText="Forudbetalt leje" />
<asp:BoundField DataField="Termination" HeaderText="Opsigelse (antal måneder)" />
<asp:TemplateField HeaderText="Møbleret">
<ItemTemplate>
<asp:Label runat="server" ID="lblIsFurnished" Text='<%# (Boolean.Parse(Eval("IsFurnished").ToString())) ? "Ja" : "Nej" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Husdyr">
<ItemTemplate>
<asp:Label runat="server" ID="lblIsFurnished" Text='<%# (Boolean.Parse(Eval("IsAnimalsAllowed").ToString())) ? "Ja" : "Nej" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Altan">
<ItemTemplate>
<asp:Label runat="server" ID="lblIsFurnished" Text='<%# (Boolean.Parse(Eval("HasBalcony").ToString())) ? "Ja" : "Nej" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delevenlig">
<ItemTemplate>
<asp:Label runat="server" ID="lblIsFurnished" Text='<%# (Boolean.Parse(Eval("CanBeShared").ToString())) ? "Ja" : "Nej" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TypeOfRental" HeaderText="Lejemålstype" />
</Columns>
</asp:GridView>
</td>
</tr>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
</td>
</tr>
<tr>
<td colspan="100%">
<asp:GridView runat="server" ID="gwBusinessLeases" Width="100%" AutoGenerateColumns="false" DataSource='<%#Eval("LeaseTypes.BusinessLeases") %>' OnRowEditing="gwAddresses_RowEditing">
<Columns>
<asp:TemplateField HeaderText="Aktiv">
<ItemTemplate>
<asp:Label runat="server" ID="lblIsLeaseActive" Text='<%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Aktiv" : "Inaktiv" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TakeoverDate" HeaderText="Overtagelsesdato" SortExpression="TakeoverDate" />
<asp:BoundField DataField="Floor" HeaderText="Sal" SortExpression="Floor" />
<asp:BoundField DataField="Side" HeaderText="Side" SortExpression="Side" />
<asp:BoundField DataField="Regulating" HeaderText="Regulering" />
<asp:HyperLinkField DataNavigateUrlFields="Prospect" HeaderText="Prospekt" />
<asp:HyperLinkField DataNavigateUrlFields="FloorPlanDrawing" HeaderText="Plantegning" />
<asp:BoundField DataField="MinimumSquareMetre" HeaderText="Kvadratmeter min." />
<asp:BoundField DataField="MaximumSquareMetre" HeaderText="Kvadratmeter max." />
<asp:BoundField DataField="YearlyRentPerSquareMetre" HeaderText="Årlig leje pr. m2" />
<asp:BoundField DataField="ACYearlyOperationalCostPerSquareMetre" HeaderText="Årlig drift pr. m2" />
<asp:BoundField DataField="Deposit" HeaderText="Depositum" />
<asp:BoundField DataField="MonthsOfPaymentInAdvance" HeaderText="Forudbetalt leje (antal måneder)" />
<asp:BoundField DataField="VATAgreements" HeaderText="Moms" />
<asp:BoundField DataField="MonthsOfTermOfNotice" HeaderText="Opsigelsesvarsel" />
<asp:BoundField DataField="TypeOfRental" HeaderText="Lejemålstype" />
</Columns>
</asp:GridView>
</td>
</tr>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</td>
</tr>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
对不起,文字墙 - 它非常大 ;-) 实际上它是四个嵌套的网格视图,但我想当我能够编辑第一个嵌套时,我可以对其他子网格视图执行完全相同的操作。
我在 .cs 文件中尝试过这样的事情:
protected void gwAddresses_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView gwAddresses = (GridView)sender;
gwAddresses.EditIndex = e.NewEditIndex;
FillGridView();
}
但它什么也没做。这可能吗?我找到了一些关于这个的优秀文章,但我根本无法让它工作:-/
我有一种奇怪的感觉,我为此使用了错误的控件。
我的对象结构如下:
- Property
- List<Address>
- Address object: List<StreetNumber>
- StreetNumber object: List<LeaseTypes>
- LeseTypes object: List<PrivateLease> and List<BusinessLease>
所以基本上这是一个五步深度结构,我需要在我的 ASP.NET 解决方案的前端绑定并使其可编辑。
这让我很头疼,所以如果有人对如何实现这一点有一点提示,我会非常感激!
提前致谢!
- 博