c# - 无法加载 View 状态

标签 c# listview events viewstate

OK 刚开始收到这个错误,我不确定为什么。我有一个包含 ListView 的托管页面和一个带有用户控件的面板。 ListView 使用链接按钮加载记录。您单击链接按钮来编辑该特定记录 - 它被加载到进入编辑模式的表单 View (在用户控件内)中。在 formview 中发生更新后,我触发了我的托管页面正在监听的事件。托管页面然后重新绑定(bind) ListView 以显示更新后的数据。这一切都在更新面板中。

所以这一切都有效 - 但是当我点击不同的链接按钮时,我收到以下错误:

Message: Sys.WebForms.PageRequestManagerServerErrorException: Failed to load viewstate.  The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.  For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

关于如何修复有什么建议吗?

我的 ListView 似乎被成功反弹 - 我可以看到我更改的数据..我只是不知道为什么当我点击链接按钮时它会提示 View 状态。或者有没有更好的方法来更新我的 ListView 中的数据?我的 ListView 和表单 View 绑定(bind)到对象数据源(以防万一)

感谢您的帮助!

这是我控制的代码隐藏。其他人评论说这个错误与更改 formview 的模式有关,但尝试了一些更改但没有成功:

public partial class UserControls_RatesEditDate : System.Web.UI.UserControl
{

    public delegate void EditDateRateEventHandler(DateTime theDateTime);
    public event EditDateRateEventHandler EditDateRateSelected;

    public delegate void UpdateDateRateEventHandler();
    public event UpdateDateRateEventHandler EditDateRateUpdated;

    public int PropertyID { get; set; }
    public int AccommodationTypeID { get; set; }
    public DateTime TheDateTime { get; set; }
    public PropertyCMSRate Rate { get; set; }

    // display filters
    public bool DisplayMTABuy { get; set; }
    public bool DisplayMTASell { get; set; }
    public bool DisplayAffiliate { get; set; }
    public bool DisplayWeekly { get; set; }
    public bool DisplayThirtyDay { get; set; }
    public bool DisplayFlexi { get; set; }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        if (Rate != null || TheDateTime != DateTime.MinValue)
        {
            if (TheDateTime == DateTime.MinValue)
            {
                frmViewRatesDate.DataSource = new List<PropertyCMSRate> { Rate };
            }
            else
            {
                PropertyCMSRateItemDs.SelectParameters["propertyID"].DefaultValue = PropertyID.ToString();
                PropertyCMSRateItemDs.SelectParameters["accommodationTypeId"].DefaultValue = AccommodationTypeID.ToString();
                PropertyCMSRateItemDs.SelectParameters["theDateTime"].DefaultValue = TheDateTime.ToString();
                frmViewRatesDate.DataSourceID = "PropertyCMSRateItemDs";

                frmViewRatesDate.ChangeMode(FormViewMode.Edit);
            }

            frmViewRatesDate.DataBind();

            if (frmViewRatesDate.CurrentMode == FormViewMode.Edit)
            {
                ((HiddenField)frmViewRatesDate.FindControl("hdnPropertyID")).Value = PropertyID.ToString();
                ((HiddenField)frmViewRatesDate.FindControl("hdnAccommTypeID")).Value = AccommodationTypeID.ToString();

            }

        }
    }

    protected void lnkEditDate_Click(object sender, EventArgs e)
    {
        if (EditDateRateSelected != null)
            EditDateRateSelected(Convert.ToDateTime(((LinkButton)frmViewRatesDate.Row.FindControl("lnkEditDate")).Text));

    }

    protected void btnUpdate_Click(object sender, EventArgs e)
    {

        if (Page.IsValid)
        {
            if (EditDateRateUpdated != null)
                EditDateRateUpdated();
        }

    }

    protected void frmViewRatesDate_ItemCommand(object sender, FormViewCommandEventArgs e)
    {
        if (e.CommandName == "Update")
        {
            PropertyCMSRateItemDs.UpdateParameters["propertyId"].DefaultValue = ((HiddenField)frmViewRatesDate.FindControl("hdnPropertyID")).Value;
            PropertyCMSRateItemDs.UpdateParameters["accommodationTypeId"].DefaultValue = ((HiddenField)frmViewRatesDate.FindControl("hdnAccommTypeID")).Value;
            PropertyCMSRateItemDs.UpdateParameters["minStay"].DefaultValue = ((DropDownList)frmViewRatesDate.FindControl("EditPriceMinStayList")).SelectedValue;
        }
    }

    protected void PropertyCMSRateItemDs_Updated(object sender, ObjectDataSourceStatusEventArgs e)
    {

        if (EditDateRateUpdated != null)
            EditDateRateUpdated();
    }
}

好的,这是我的 aspx 页面 - 抱歉,在我离开办公室去拿食物后意识到这可能会有所帮助。 :) 在我的包含该词的 ListView 之前发表评论..

<%@ MasterType VirtualPath="~/Properties-Cms/AddEdit.master" %>
<%@ Register Src="../UserControls/RatesEditDate.ascx" TagName="RatesEditDate" TagPrefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <Triggers>
        </Triggers>
        <ContentTemplate>
                <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="Main" />
            <div class="bluebox">
                <asp:ValidationSummary ID="ValidationSummary2" runat="server" ValidationGroup="AddAccommodationType" />
                <asp:CustomValidator ID="DisplayPriceValidation" Display="Dynamic" runat="server" OnServerValidate="DisplayPrice_Validated"
                                ValidationGroup="Main" ErrorMessage="Please ensure you have selected Accommodation and selected a valid display rates option">
                            </asp:CustomValidator>
                <div class="col33">
                    <!-- accommodation -->
                    <div class="field">
                        <asp:Label ID="Label1" runat="server" Text="Select Accommodation" AssociatedControlID="Accommodations1" />
                        <asp:DropDownList ID="Accommodations1" runat="server" AutoPostBack="true" DataTextField="AccommodationTypeDescription"
                            DataValueField="Id" OnDataBound="Accommodations1_DataBound" OnSelectedIndexChanged="Accommodations1_SelectedIndexChanged"
                            Width="200px" DataSourceID="AccommodationDs">
                        </asp:DropDownList>
                        <asp:ObjectDataSource ID="AccommodationDs" runat="server" OldValuesParameterFormatString="original_{0}"
                            SelectMethod="ListByPropertyId" TypeName="Shared.MtaLib.Bll.PropertyAccommodationController">
                            <SelectParameters>
                                <asp:Parameter Name="PropertyId" Type="Int32" />
                            </SelectParameters>
                        </asp:ObjectDataSource>
                    </div>
                </div>
                <!-- middle column -->
                <div class="col33">
                    <ul style="list-style-type: none;">
                        <li>
                            <asp:Label ID="Label100" runat="server" Text="Accommodation" AssociatedControlID="lblAccom" />&nbsp;<asp:Label
                                ID="lblAccom" runat="server" Text="" /></li>
                        <li>
                            <asp:Label ID="Label101" runat="server" Text="Local Label" AssociatedControlID="lblLocalLabel" />&nbsp;<asp:Label
                                ID="lblLocalLabel" runat="server" Text="" /></li>
                    </ul>
                </div>
                <!--Right hand side Level 1 -->
                <div class="col33">
                    <asp:Button runat="server" ID="btnAddAccommodation" Text="Add Accommodation" OnClick="btnAddAccommodation_Click" /><br />
                    <br />
                    <asp:LinkButton runat="server" ID="lnkEditAccommodation" Text="View/Edit available Accommodations"
                        OnClick="lnkEditAccommodation_Click" />
                    <br />
                </div>
                <div style="clear: both;">
                </div>
            </div>
            <!--Left hand side Level 2 -->
            <asp:Panel runat="server" ID="pnlViewAccommodationRatesDates">
                <div style="clear: both;" />
                <div class="box">
                    <div class="col40">
                        Display rates Range<br />
                        <asp:RadioButton ID="ViewRange" runat="server" GroupName="DisplayDate" Checked="true" />
                        <asp:Label runat="server" ID="Label5" AssociatedControlID="txtDisplayFrom" Text="From" />
                        <asp:TextBox ID="txtDisplayFrom" runat="server"></asp:TextBox>
                        <asp:Label runat="server" ID="Label6" AssociatedControlID="txtDisplayTo" Text="To" />
                        <asp:TextBox ID="txtDisplayTo" runat="server"></asp:TextBox>
                    </div>
                    <div class="col20">
                        <br />
                        <asp:RadioButton ID="ViewRange1" runat="server" GroupName="DisplayDate" Text="Next 1 month" /><br />
                        <asp:RadioButton ID="ViewRange3" runat="server" GroupName="DisplayDate" Text="Next 3 month" /><br />
                        <asp:RadioButton ID="ViewRange6" runat="server" GroupName="DisplayDate" Text="Next 6 month" />
                    </div>
                    <div class="col20">
                        Show<br />
                        <asp:CheckBox ID="chkDisplayMTABuy" runat="server" Text="MTA Buy" Checked="true" /><br />
                        <asp:CheckBox ID="chkDisplayMTASell" runat="server" Text="MTA Sell" Checked="true" /><br />
                        <asp:CheckBox ID="chkDisplayAffiliateNett" runat="server" Text="Affiliate Nett" Checked="true" /><br />
                        <asp:CheckBox ID="chkDisplayWeekly" runat="server" Text="Weekly" Checked="true" /><br />
                        <asp:CheckBox ID="chkDisplay30Day" runat="server" Text="30 Day" Checked="true" /><br />
                        <asp:CheckBox ID="chkDisplayFlexi" runat="server" Text="Flexi" Checked="true" />
                    </div>
                    <div class="col20">
                        <br />
                        <br />
                        <br />
                        <asp:Button ID="btnDisplayRates" runat="server" Text="Display Rates" OnClick="btnDisplayRates_Click" />
                        <br />
                        <br />
                        <asp:LinkButton ID="lnkAddEditRate" runat="server" Text="Add / Edit Rates" OnClick="lnkAddEditRate_Click" />
                    </div>
                    <div style="clear: both;" />
                </div>
            </asp:Panel>
            <!-- hidden panel removed as I'm out of characters -->
            <!-- Listview containing user control.. usercontrol has formview with a linkbutton -->
            <asp:Panel runat="server" ID="pnlViewAccommodationRates" Visible="false">
                <div class="propertyaddedit_ratesbox">
                    <fieldset>
                        <legend>Click on individual dates to edit</legend>
                        <asp:Panel ID="Panel5" runat="server" ScrollBars="Vertical" Height="400">
                            <asp:ListView ID="PropertyAccommodationRates1" runat="server" DataSourceID="PropertyCMSRateListDs"
                                ItemPlaceholderID="itemsGoHere" OnItemDataBound="PropertyAccommodationRates1_ItemDataBound"
                                GroupItemCount="7" GroupPlaceholderID="groupsGoHere">
                                <GroupTemplate>
                                    <tr>
                                        <asp:PlaceHolder runat="server" ID="itemsGoHere" />
                                    </tr>
                                </GroupTemplate>
                                <ItemTemplate>
                                    <td>
                                        <uc1:RatesEditDate ID="RatesViewDate1" runat="server" OnEditDateRateSelected="RatesEditDate1_EditDateRateSelected"
                                            OnEditDateRateUpdated="RatesEditDate1_EditDateRateUpdated" />
                                    </td>
                                </ItemTemplate>
                                <LayoutTemplate>
                                    <table width="525px" cellspacing="2">
                                        <tr class="propertyaddedit_gridViewRates">
                                            <th class="propertyaddedit_ratesGrid">
                                                Monday
                                            </th>
                                            <th class="propertyaddedit_ratesGrid">
                                                Tuesday
                                            </th>
                                            <th class="propertyaddedit_ratesGrid">
                                                Wednesday
                                            </th>
                                            <th class="propertyaddedit_ratesGrid">
                                                Thursday
                                            </th>
                                            <th class="propertyaddedit_ratesGrid">
                                                Friday
                                            </th>
                                            <th class="propertyaddedit_ratesGrid">
                                                Saturday
                                            </th>
                                            <th class="propertyaddedit_ratesGrid">
                                                Sunday
                                            </th>
                                        </tr>
                                        <tr>
                                            <asp:PlaceHolder runat="server" ID="groupsGoHere" />
                                        </tr>
                                    </table>
                                </LayoutTemplate>
                            </asp:ListView>
                            <asp:ObjectDataSource ID="PropertyCMSRateListDs" runat="server" SelectMethod="ListPropertyCMSRates"
                                TypeName="Shared.MtaLib.Bll.PropertyRateController" OnSelecting="PropertyCMSRateListDs_Selecting">
                                <SelectParameters>
                                    <asp:Parameter Name="propertyId" Type="Int32" />
                                    <asp:Parameter Name="accommodationTypeId" Type="Int32" />
                                    <asp:Parameter Name="minDateTime" Type="DateTime" />
                                    <asp:Parameter Name="maxDateTime" Type="DateTime" />
                                    <asp:Parameter Name="fillMondays" Type="Boolean" DefaultValue="true" />
                                </SelectParameters>
                            </asp:ObjectDataSource>
                        </asp:Panel>
                    </fieldset>
                </div>
            </asp:Panel>



            <div style="clear: both;">
            </div>
            <!-- this is the usercontrol where the edit occurs -->
            <div runat="server" id="divEditRate" visible="true">
                <uc1:RatesEditDate ID="RatesEditDate1" runat="server" />
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

我的用户控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="RatesEditDate.ascx.cs"
    Inherits="UserControls_RatesEditDate" %>
<asp:FormView ID="frmViewRatesDate" runat="server" Height="50px" Width="125px" OnItemCommand="frmViewRatesDate_ItemCommand"
    DataKeyNames="TheDateTime">
    <ItemTemplate>
        <asp:LinkButton ID="lnkEditDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "TheDateTime", "{0:dd/MM/yyyy}") %>'
            OnClick="lnkEditDate_Click" />
        <asp:Literal ID="Literal1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTABuyRateDaily", "{0:n}") %>'
            Visible='<%# DisplayMTABuy %>' />
        <asp:Literal ID="Literal2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTASellRateDaily", "{0:n}") %>'
            Visible='<%# DisplayMTASell %>' />
        <asp:Literal ID="Literal3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AffiliateNettDaily", "{0:n}") %>'
            Visible='<%# DisplayAffiliate %>' />
        <asp:Literal ID="Literal4" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTABuyRateWeekly", "{0:n}") %>'
            Visible='<%# DisplayWeekly %>' />
        <asp:Literal ID="Literal5" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MTASellRateWeekly", "{0:n}") %>'
            Visible='<%# DisplayWeekly %>' />
        <asp:Literal ID="Literal6" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AffiliateNettWeekly", "{0:n}") %>'
            Visible='<%# DisplayWeekly %>' />
        <asp:Literal ID="Literal7" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ThirtyDay", "{0:n}") %>'
            Visible='<%# DisplayThirtyDay %>' />
        <asp:Literal ID="Literal8" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Flexi", "{0:n}") %>'
            Visible='<%# DisplayFlexi %>' />
    </ItemTemplate>
    <EditItemTemplate>
        <div class="field">
            <asp:Literal ID="TheDate" runat="server" Text='<%# Bind("TheDateTime", "{0:dd/MM/yyyy}") %>' />
        </div>
        <div class="field">
            <asp:Label ID="Label1" Text="MTA buy rate" AssociatedControlID="MTABuyRate1" runat="server" /><asp:TextBox
                ID="MTABuyRate1" runat="server" Text='<%# Bind("MTABuyRateDaily", "{0:n}")%>' />
            <asp:CompareValidator ID="MTABuyRateValidator" runat="server" Type="Currency" ControlToValidate="MTABuyRate1"
                Operator="GreaterThan" ValueToCompare="0" ErrorMessage="" Display="Dynamic" ValidationGroup="EditPrice">
                <asp:Image ID="Image8" SkinID="ValidationErrorImage" runat="server" />
            </asp:CompareValidator>
            <asp:RequiredFieldValidator ID="MTABuyRateValidator2" runat="server" ControlToValidate="MTABuyRate1"
                ErrorMessage="" Display="Dynamic" ValidationGroup="EditPrice">
                <asp:Image ID="Image33" SkinID="ValidationErrorImage" runat="server" />
            </asp:RequiredFieldValidator>
        </div>
        <!-- similar items removed due to character restriction -->
        <div class="field">
            <asp:Label ID="Label6" Text="Total PAX" runat="server" AssociatedControlID="TotalPax1" />
            <asp:CompareValidator ID="TotalPaxValidator1" runat="server" ControlToValidate="TotalPax1"
                Operator="NotEqual" ValueToCompare="0" ErrorMessage="Please choose a non zero Total Pax "
                Display="Dynamic" ValidationGroup="EditPrice">
                <asp:Image ID="Image15" SkinID="ValidationErrorImage" runat="server" />
            </asp:CompareValidator>
            <asp:DropDownList ID="TotalPax1" runat="server">
                <asp:ListItem Value="0" />
                <asp:ListItem Value="1" />
                <asp:ListItem Value="2" />
                <asp:ListItem Value="3" />
                <asp:ListItem Value="4" />
                <asp:ListItem Value="5" />
                <asp:ListItem Value="6" />
                <asp:ListItem Value="7" />
                <asp:ListItem Value="8" />
                <asp:ListItem Value="9" />
                <asp:ListItem Value="10" />
            </asp:DropDownList>
        </div>
        <div class="field">
            <asp:Label runat="server" ID="Label15" AssociatedControlID="EditPriceMinStayList"
                Text="Min stay (nights)" />
            <asp:CompareValidator ID="EditPriceMinStayListValidator1" runat="server" ControlToValidate="EditPriceMinStayList"
                Operator="NotEqual" ValueToCompare="0" ErrorMessage="Please choose a non zero Min Stay"
                Display="Dynamic" ValidationGroup="EditPrice">
                <asp:Image ID="Image6" SkinID="ValidationErrorImage" runat="server" />
            </asp:CompareValidator>
            <!-- todo bind-->
            <asp:DropDownList ID="EditPriceMinStayList" runat="server">
                <asp:ListItem Value="0" />
                <asp:ListItem Value="1" />
                <asp:ListItem Value="2" />
                <asp:ListItem Value="3" />
                <asp:ListItem Value="4" />
                <asp:ListItem Value="5" />
                <asp:ListItem Value="6" />
                <asp:ListItem Value="7" />
                <asp:ListItem Value="8" />
                <asp:ListItem Value="9" />
                <asp:ListItem Value="10" />
                <asp:ListItem Value="11" />
                <asp:ListItem Value="12" />
                <asp:ListItem Value="13" />
                <asp:ListItem Value="14" />
                <asp:ListItem Value="15" />
                <asp:ListItem Value="16" />
                <asp:ListItem Value="17" />
                <asp:ListItem Value="18" />
                <asp:ListItem Value="19" />
                <asp:ListItem Value="20" />
                <asp:ListItem Value="21" />
                <asp:ListItem Value="22" />
                <asp:ListItem Value="23" />
                <asp:ListItem Value="24" />
                <asp:ListItem Value="25" />
                <asp:ListItem Value="26" />
                <asp:ListItem Value="27" />
                <asp:ListItem Value="28" />
                <asp:ListItem Value="29" />
                <asp:ListItem Value="30" />
            </asp:DropDownList>
        </div>
        <div class="field">
            <%--<asp:Button ID="btnUpdate" runat="server" Text="Update" OnClick="btnUpdate_Click" CommandName="Update" />--%>
            <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandName="Update" ValidationGroup="EditPrice" />
        </div>
        <asp:HiddenField runat="server" ID="hdnPropertyID" />
        <asp:HiddenField runat="server" ID="hdnAccommTypeID" />
    </EditItemTemplate>
</asp:FormView>
<asp:ObjectDataSource ID="PropertyCMSRateItemDs" runat="server" SelectMethod="ListPropertyCMSRate"
    TypeName="Shared.MtaLib.Bll.PropertyRateController" UpdateMethod="UpdatePropertyCMSRate"
    OldValuesParameterFormatString="original_{0}" OnUpdated="PropertyCMSRateItemDs_Updated">
    <UpdateParameters>
        <asp:Parameter Name="propertyId" Type="Int32" />
        <asp:Parameter Name="accommodationTypeId" Type="Int32" />
        <asp:Parameter Name="minStay" Type="Int32" />
        <asp:Parameter Name="TheDateTime" Type="DateTime" />
        <asp:Parameter Name="MTABuyRateDaily" Type="Decimal" />
        <asp:Parameter Name="MTASellRateDaily" Type="Decimal" />
        <asp:Parameter Name="AffiliateNettDaily" Type="Decimal" />
        <asp:Parameter Name="MTABuyRateWeekly" Type="Decimal" />
        <asp:Parameter Name="MTASellRateWeekly" Type="Decimal" />
        <asp:Parameter Name="AffiliateNettWeekly" Type="Decimal" />
        <asp:Parameter Name="ThirtyDay" Type="Decimal" />
        <asp:Parameter Name="Flexi" Type="Decimal" />
        <asp:Parameter Name="IsBreakfastIncluded" Type="Boolean" />
        <asp:Parameter Name="IsFairWarning" Type="Boolean" />
        <asp:Parameter Name="TotalPax" Type="Int32" />
        <asp:Parameter Name="original_TheDateTime" Type="DateTime" />
    </UpdateParameters>
    <SelectParameters>
        <asp:Parameter Name="propertyId" Type="Int32" DefaultValue="0" />
        <asp:Parameter Name="accommodationTypeId" Type="Int32" DefaultValue="0" />
        <asp:Parameter Name="theDateTime" Type="DateTime" />
    </SelectParameters>
</asp:ObjectDataSource>

最佳答案

我已经为这个问题奋斗了几个小时和几天。 我找到的答案都没有完全解决我的问题,但我终于找到了解决方案。

我的场景如下。 我有一个 GridView 和一个 FormView。这些位于 MultiView 控件的两个 View 上。 我在 GridView 中显示数据列表。我的编辑按钮切换到 FormView,因为我要编辑的字段多于 gridview 上的水平线(没有水平滚动)。

如果我从 FormView 的编辑模式中取消并返回到 GridView(我使用 OnClick 事件来执行此操作),则下次发生回发时,我会收到 ViewState 错误。

如果我从 FormView 的编辑模式取消并简单地切换到 ReadOnly 模式,然后取消返回到 GridView,一切正常。

解决方案: 我的解决方案是将 FormView 的默认模式设置为“编辑”。 我的理论是,如果 FormView 默认模式是“只读”,当我从 FormView 的编辑模式取消时,下次加载页面时,它会尝试将编辑模式的 ViewState 应用到只读模式(默认情况下页面加载)。通过将默认 View 设置为“编辑”,在页面加载后,使用编辑模式保存的 ViewState 将重新加载到现在新的编辑模式(默认)。

即使 MultiView 的当前 ActiveView 显示的是 Grid 而不是 Form,这一切都会发生。

自从将 FormView 的默认模式切换为“编辑”后,我没有遇到任何 ViewState 问题

希望这对您有所帮助,欢迎提出任何意见。

谢谢。

哈夫萨瑟

关于c# - 无法加载 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067024/

相关文章:

c# - SerialPort.Read(byte[], int32, int32) 没有阻塞,但我想要它——我该如何实现?

c# - 如何在 XSD 数据协定中指定泛型类型参数?

jquery - 在动态创建的元素上调用 .each 的正确方法?

jquery - jquery 中的删除事件取消了慢速隐藏事件

c# - 使用表单元素与 UserControls 交互

c# - 使用 html 帮助程序在 asp.net mvc 中显示导航属性的正确方法

c# - 如何仅在TreeView中设置顶级项目的样式?

android - 滑动时获取 ListView 的行位置

winapi - Win32 ListView 控制自定义绘制子项的子项填充?

java - 更改 ListView 中单个 View 的外观