0

質問があります

私のグリッドには列があります

-Name-----------From--------To----------Rate---
Amenity         8/8/2012    8/9/2012    50.00
Amenity         8/6/2012    8/7/2012    50.00
Amenity         8/9/2012    8/10/2012   50.00
Amenity two     7/28/2012   7/31/2012   0.00
Amenity two     8/3/2012    8/4/2012    0.00

フロントエンドでこの構造を取得するにはどうすればよいですか

-Name-----------From--------To----------Rate---
Amenity         8/8/2012    8/9/2012    50.00
                8/6/2012    8/7/2012    50.00
                8/9/2012    8/10/2012   50.00
Amenity two     7/28/2012   7/31/2012   0.00
                8/3/2012    8/4/2012    0.00

の重複Name- 一度だけ表示したいだけです。これどうやってするの?

4

2 に答える 2

0

DataGrid を使用していると仮定すると (RowDataBoundイベントについて言及しているため)、それを行うための古典的な方法は次のようになります。

  1. ページ レベルで文字列変数を作成し、「lastAmenityName」のような名前を付けます。

  2. 次のコードを DataRowBound に追加します (これはメモリからのものであるため、正しくない可能性があります)。

..

string amenityName = ((yourobject) e.Row.DataItem).AmenityName;
if(amenityName != lastAmenityName)
     e.Row.Cells[whatevercolumn].Text = amenityName;
else
     e.Row.Cells[whatevercolumn].Text = "";
lastAmenityName = amenityName;
于 2013-02-06T15:28:06.190 に答える
0

ネストされた GridView を使用して、言及した方法で表示できます。

ここに画像の説明を入力

public class User
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Date
{
    public int DateId { get; set; }
    public int UserId { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
    public decimal Rate { get; set; }
}

public List<User> Users
{
    get
    {
        return new List<User>
            {
                new User {UserId = 1, FirstName = "John", LastName = "Doe"},
                new User {UserId = 2, FirstName = "Marry", LastName = "Newton"},
                new User {UserId = 3, FirstName = "Joe", LastName = "Black"}
            };
    }
}

public List<Date> Dates
{
    get
    {
        return new List<Date>
            {
                new Date
                    {
                        DateId = 1,
                        UserId = 1,
                        FromDate = Convert.ToDateTime("8/8/2012"),
                        ToDate = Convert.ToDateTime(" 8/9/2012"),
                        Rate = 50.00M
                    },
                new Date
                    {
                        DateId = 2,
                        UserId = 1,
                        FromDate = Convert.ToDateTime("8/6/2012"),
                        ToDate = Convert.ToDateTime("8/7/2012"),
                        Rate = 50.00M
                    },
                new Date
                    {
                        DateId = 3,
                        UserId = 1,
                        FromDate = Convert.ToDateTime("8/9/2012"),
                        ToDate = Convert.ToDateTime("8/10/2012"),
                        Rate = 50.00M
                    },
            };
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridView1.DataSource = Users;
        GridView1.DataBind();
    }
}

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        var user = e.Row.DataItem as User;

        var gridView2 = ((GridView) e.Row.FindControl("GridView2"));

        gridView2.DataSource = Dates.Where(d => d.UserId == user.UserId);
        gridView2.DataBind();
    }
}

<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="False" OnRowDataBound="GridView_RowDataBound">
    <Columns>
        <asp:BoundField DataField="LastName" HeaderText="LastName" />
        <asp:BoundField DataField="FirstName" HeaderText="FirstName" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:GridView runat="server" ID="GridView2" AutoGenerateColumns="False">
                    <Columns>
                        <asp:BoundField DataField="FromDate" HeaderText="From" />
                        <asp:BoundField DataField="ToDate" HeaderText="To" />
                        <asp:BoundField DataField="Rate" HeaderText="Rate" />
                    </Columns>
                </asp:GridView>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
于 2013-02-06T21:14:45.980 に答える