首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个GridViews

使用多个GridViews
EN

Stack Overflow用户
提问于 2015-05-20 13:49:35
回答 2查看 231关注 0票数 0

我目前正在开发一个网站,其中一个页面需要在不同的GridView中显示数据。那几页看起来就像

代码语言:javascript
复制
<h2>First Header</h2>
<p>Some text</p>
<asp:GridView ID="FirstGrid" runat="server"/>
...
<h2>Second Header</h2>
<p>Some text</p>
<asp:GridView ID="SecondGrid" runat="server"/>
...
<h2>Third Header</h2>
<p>Some text</p>
<asp:GridView ID="ThirdGrid" runat="server"/>
...

总之,我将有大约6-7 Gridviews.每个网格显示来自不同目录的文件。目前,我有一个函数BindGridView(string directoryName),我为每个网格DataSource执行以下操作

代码语言:javascript
复制
FirstGrid.DataSource = BindGridView("First Directory");
FirstGrid.DataBind();
SecondGrid.DataSource = BindGridView("Second Directory");
SecondGrid.DataBind();
...

我的问题是,我能有一个Gridview并改变DataSource吗?还是我需要所有的6-7并且继续以我现在的方式工作?

下面的图片是我到目前为止所得到的。文件名上的是每个网格的主要标题

提前感谢您的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-21 06:50:14

下面是一个使用嵌套ListView的快速而肮脏的示例。

这里我使用了两个类DirectoryDirectoryFile

代码语言:javascript
复制
namespace WebFormsApp
{
    public class Directory
    {
        // the directory names like First Directory
        public string DirectoryName { get; set; }
        // the content that comes under header tag
        public string HeaderText { get; set; }
        // the content that comes under p tag
        public string InfoText { get; set; }
    }
    public class DirectoryFile
    {
        // file name
        public string FileName { get; set; }
        // download url
        public string Url { get; set; }
    }
}

标记应该喜欢类似于

代码语言:javascript
复制
<asp:ListView ID="DirectoryList" runat="server" 
    ItemType="WebFormsApp.Directory" 
    SelectMethod="GetDirectories"
    OnItemDataBound="DirectoryList_ItemDataBound">   
    <ItemTemplate>
        <h2><%# Item.HeaderText %></h2>
        <p><%# Item.InfoText %></p>
        <asp:ListView ID="FileList" runat="server" 
            DataMember='<%# Item.DirectoryName %>' 
            ItemType="WebFormsApp.DirectoryFile">
            <LayoutTemplate>
                <table>
                    <thead>
                        <tr>
                            <th>File Name</th>
                            <th>Download</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr id="itemPlaceHolder" runat="server"></tr>
                    </tbody>
                </table>
            </LayoutTemplate>
            <ItemTemplate>
                <tr>
                    <td><%# Item.FileName %></td>
                    <td><%# Item.Url %></td>
                </tr>
            </ItemTemplate>
        </asp:ListView>
    </ItemTemplate>
</asp:ListView>

在这里,父ListView有一个除ItemType="WebFormsApp.Directory"以外的SelectMethod="GetDirectories"。方法是

代码语言:javascript
复制
public List<Directory> GetDirectories()
{
    //assuming it will be a not populated from database. 
    // if so change your code accordingly
    var directories = new List<Directory>()
        {
            new Directory {DirectoryName="FirstDirectory", HeaderText="First Header", InfoText="Some Info"},
            new Directory {DirectoryName="SecondDirectory", HeaderText="Second Header", InfoText="Other Info"}
        };
    return directories;
}

最后,连接一个ItemDataBound方法(它遍历每个项)并找到子ListView。请注意我们已经提供了一个DataMember='<%# Item.DirectoryName %>',以便我们可以在代码隐藏时访问它.

代码语言:javascript
复制
protected void DirectoryList_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        var listView = (ListView)e.Item.FindControl("FileList");
        var directoryName = listView.DataMember;
        GetFiles(listView, directoryName);
    }
}
public void GetFiles(ListView listView, string directoryName)
{

    listView.DataSource = BindChildlistView(directoryName);
    listView.DataBind();
}

希望代码是不言自明的

票数 1
EN

Stack Overflow用户

发布于 2015-05-21 04:27:44

如果是这样的话,只需使用嵌套的中继器。除非您确实需要GridView内置功能,如排序等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30351700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档