DataList嵌套GridView实现文章分类列表显示(2)

一直没注意,前天有位网友告诉我,他找相关的文章,在Google里搜索第一条就是我的这篇了    有点意外...

但是他们都遇到一个相同的问题,就是,完成后,DataList显示是正确的,里面的GridView却没显示出来...  我因为也没空,所以只是回答他们,让他们自己调试下,看问题在哪里

刚才又有一个网友问了我同样的问题... 闲来就自己重新写了个小测试程序

这是前台:

ContractedBlock.gif ExpandedBlockStart.gif Code
        <asp:DataList ID="dataList" runat="server" DataKeyField="ID" OnItemDataBound="dataList_ItemDataBound">
            
<ItemTemplate>
                
<%Eval("Name"%>
                
<asp:GridView ID="gridView" runat="server">
                
</asp:GridView>
            
</ItemTemplate>
        
</asp:DataList>

这是后台:

ContractedBlock.gif ExpandedBlockStart.gif Code
    protected void Page_Load(object sender, EventArgs e)
    {
        
if (!IsPostBack)
        {
            DataTable table 
= CreateDataTable(new string[] { "ID""Name" });
            InsertData(table, 
new string[] { "1""Hello" });
            InsertData(table, 
new string[] { "2""World" });
            dataList.DataSource 
= table;
            dataList.DataBind();        
        }
    }

    
protected void dataList_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            
string id = dataList.DataKeys[e.Item.ItemIndex].ToString();
            GridView gv 
= e.Item.FindControl("gridView"as GridView;
            GridViewDataBind(gv, id); 
// 现在ID 没用到
        }
    }
    
// 现在ID 没用到
    private void GridViewDataBind(GridView gv, string id)
    {
        DataTable table 
= CreateDataTable(new string[] { "ID""Name" });
        InsertData(table, 
new string[] { "11""Hello" });
        InsertData(table, 
new string[] { "12""World" });

        gv.DataSource 
= table;
        gv.DataBind();
    }

    DataTable CreateDataTable(
string[] columns)
    {
        DataTable table 
= new DataTable();
        
foreach(string column in columns)
        {
            table.Columns.Add(column, 
typeof(string));
        }
        
return table;
    }

    
void InsertData(DataTable table, string[] values)
    {
        DataRow row 
= table.NewRow();
        
for (int i = 0; i < values.Length; i++)
        {
            row[i] 
= values[i];
        }
        table.Rows.Add(row);
    }

工作正常。

但是,我也遇到了一个问题,就是前台不使用 OnItemDataBound="dataList_ItemDataBound" 的方式,在Page_Load事件里面 添加如下代码的时候

ContractedBlock.gif ExpandedBlockStart.gif Code
dataList.ItemDataBound += new DataListItemEventHandler(dataList_ItemDataBound);

dataList_ItemDataBound 这个事件居然没执行... 晕~~ 

原因是哪里,我现在也不知道,有知道的朋友告诉我下哈... 嘿嘿

顺便附上 源代码 

转载于:https://www.cnblogs.com/chenjilv/archive/2009/01/21/1379543.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值