簡體   English   中英

在GridView ASP.NET中設置用戶控件對象屬性

[英]Set User Controls Objects Properties inside a GridView ASP.NET

我在gridview中插入三個模板列。 在每一列中,我插入一個用戶控件。 例如,在第一列中,有一個包含圖像和三個標簽的用戶控件。

在頁面加載中,我需要獲取文件夾中的圖像列表,並為每個圖像創建一行。 然后,我需要在gridview列中更新這些用戶控件的圖像。

這是獲取圖像列表並將成為GridView數據源的示例代碼:

        string[] filePaths = Directory.GetFiles(Server.MapPath("~/Resources/Pictures"));
        GridView1.DataSource = filePaths;
        GridView1.DataBind();

在此步驟中,我可以看到4行已填充RAW用戶控件(圖像控件中的空圖像,標簽的默認文本等)。現在,我需要使用自己的屬性更新每行。

這是我的輸出的圖片:

在此處輸入圖片說明

如您在第一列中看到的,有一些控件(圖像和標簽)是供用戶控件使用的,這些控件是我在gridview的列模板中使用的。 但是它們是RAW,我需要更新它們。 例如,我需要使用您在第三欄中看到的鏈接來更新圖像。

這是我的GridView代碼的一部分:

<asp:GridView ID="GridView1" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" Caption="Image List" CellPadding="2" ForeColor="Black" GridLines="None" Height="222px" Width="409px">
    <AlternatingRowStyle BackColor="PaleGoldenrod" />
    <Columns>
        <asp:TemplateField HeaderText="Old Picture">
            <ItemTemplate>
                <uc1:ImageColumn ID="ImageColumn1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="New Picture">
            <ItemTemplate>
                <uc2:ReplaceColumn ID="ReplaceColumn1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Allow Access">
            <ItemTemplate>
                <asp:Image ID="Image1" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>

希望它足夠清楚。 有人可以幫忙嗎?

您必須將公共屬性添加到用戶控件中,然后使用“常規”數據綁定表達式進行設置。 例如:

用戶控制:

public class MyUserControl : UserControl
{
    public string ImageName {get; set;}
}

網格的模板列:

<asp:TemplateField ...>
    <ItemTemplate>
        <uc1:MyUserControl runat="server" ImageName='<%# Eval("ImageUrl")%>' ... />

后台代碼:

public class ImageVM { // view-model for data-binding
    public string ImageUrl { get; set; }
}

...

var images = LoadImages(); // returns a list of ImageVM instances
grid.DataSource = images;
grid.DataBind();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM