今天做了一个管理文章的页面。
有两个datalist ,一个绑定文章信息,一个绑定文章对应的评论信息。
我先是在第一层datalist1中加了一个按纽事件,
在点击这个按钮之后就能实现对于文章对应的DataList2的绑定。
<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand" OnItemDataBound="DataList1_ItemDataBound" BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4" GridLines="Horizontal">
        
<ItemTemplate>
        
<asp:Label ID=lb_id runat=server Visible=false Text='<%# Eval("id") %>'></asp:Label>
            
<asp:Label ID=lb_title Font-Size=Large Font-Bold=true runat=server Text='<%# Eval("artTitle") %>'></asp:Label> &nbsp;
            
<asp:Label ID=lb_pubTime runat=server Text='<%# Eval("pubTime") %>'></asp:Label><br />
            点击率:
<asp:Label ID=lb_pointTimes runat=server Text='<%# Eval("pointTimes") %>'></asp:Label>
            被顶次数:
<asp:Label ID=lb_diggTimes runat=server Text='<%# Eval("diggTimes") %>'></asp:Label>
            
<asp:LinkButton ID=lbtn_view CssClass=btn CommandName="ViewContent" runat=server Text="查看内容"></asp:LinkButton>
            
<asp:LinkButton ID=lbtn_viewComment CommandName="viewComment" CommandArgument='<%# Eval("id") %>' CssClass=btn runat=server Text="查看评论"></asp:LinkButton>
             
<asp:LinkButton ID=lbtn_delete CommandName="artDelete" CommandArgument='<%# Eval("id") %>' CssClass=btn runat=server Text="删除"></asp:LinkButton>
           
                 
<asp:Panel ID=pl_content runat=server Visible=false>
                
<asp:Label ID=lb_content runat=server Text='<%# Eval("artContent") %>'></asp:Label>
            
</asp:Panel>
            
<asp:Panel ID=pl_comment runat=server Visible=false>
               
      
<asp:Label ID=lb_msg2 runat=server ForeColor=red></asp:Label>
      
<asp:DataList ID="DataList2" runat="server" OnItemCommand="DataList2_ItemCommand">
                
<ItemTemplate>
          
<asp:Label ID=lb_comArtId runat=server Visible=false Text='<%# Eval("artId") %>'></asp:Label>
                    评论人:
<asp:Label ID=lb_userName Text='<%# Eval("userName") %>' runat=server></asp:Label>
                    评论时间:
<asp:Label ID=lb_comPubTime Text='<%# Eval("pubTime") %>' runat=server></asp:Label>
                    
<br />
                    评论人联系方式:
<asp:Label ID=lb_userContact Text='<%# Eval("userContact") %>' runat=server></asp:Label>
                    
<br />
                    评论内容:
                    
<asp:Label ID=lb_comContent Text='<%# Eval("commentContent") %>' runat=server ></asp:Label>
                    
<asp:LinkButton ID=lbtn_comDelete runat=server CssClass=btn Text="删除" CommandName="comDelete" CommandArgument='<%# Eval("id") %>'></asp:LinkButton>
                
</ItemTemplate>
            
</asp:DataList>
            
            
</asp:Panel>
                                   
                                        
        
</ItemTemplate>
                    
</asp:DataList>

对于这种的绑定还是很容易实现,方法如下:
 if (e.CommandName == "viewComment")
        
{
            Panel pl2 
= (Panel)e.Item.FindControl("pl_comment");
            
if (pl2.Visible == false)
            
{

                DataList Dl2 
= (DataList)e.Item.FindControl("DataList2");
                Label lb2 
= (Label)e.Item.FindControl("lb_msg2");

                
if (Dl2.Items.Count == 0 && lb2.Text == "")
                
{
                    
string connStr = ConfigurationSettings.AppSettings["connectionString"];
                    DataControl myDataControl 
= new DataControl(connStr);

                    
string sqlStr = "select * from commentInfo where artId='" + e.CommandArgument.ToString() + "";
                    DataTable table 
= myDataControl.GetTable(sqlStr);

                    
if (table.Rows.Count > 0)
                    
{
                      
                        lb2.Text 
= "";
                    }

                    
else
                    
{
                        lb2.Text 
= "该文章没有评论";
                    }

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

                pl2.Visible 
= true;
            }

            
else
            
{
                pl2.Visible 
= false;
            }


        }

上面就基本实现了两个DATALIST的绑定了。

但是我现在想要,在子的datalist2中添一个删除按钮,点击以后进行数据库操作并再次对这个datalist进行绑定。
网上找了很久都没找到好的办法。
数据操作容易,主要是进行数据绑定时找不到这个子控件。
后来想到一个办法,就是Datalist2中用了一个Label来记录文章的ID,然后DataList1中也用了一个Label来记录他的主码id.方法不太好,我现在正想找有什么更简单性能更好的办法。。  希望和大家能交流、学习。
代码如下:
 protected void DataList2_ItemCommand(object source, DataListCommandEventArgs e)
    
{  
        
if (e.CommandName == "comDelete")
        
{
           
            Label lb_artId 
= (Label)e.Item.FindControl("lb_comArtId");
            
string connStr = ConfigurationSettings.AppSettings["connectionString"];
            DataControl myDataControl 
= new DataControl(connStr);
           
            
string sqlStr = "delete from commentInfo where id='" + e.CommandArgument.ToString() + "'";


            
try
            
{
                myDataControl.OpenConnection();
                myDataControl.UpdateDataBase(sqlStr);
                myDataControl.CloseConnection();

                sqlStr 
= "select * from commentInfo where artId='" + lb_artId.Text + "'";
                DataTable table 
= myDataControl.GetTable(sqlStr);


                
foreach (DataListItem item in DataList1.Items)
                
{
                    Label lb_id 
= (Label)item.FindControl("lb_id");
                    
if (lb_id.Text == lb_artId.Text)
                    
{
                        DataList Dl2 
= (DataList)item.FindControl("DataList2");
                        Label lb2 
= (Label)item.FindControl("lb_msg2");

                        
if (table.Rows.Count > 0)
                        
{
                          
                            lb2.Text 
= "";
                        }

                        
else
                        
{
                            lb2.Text 
= "该文章没有评论";
                        }

                        Dl2.DataSource 
= table;
                        Dl2.DataBind();

                    }

                }


            }

            
catch (Exception ex)
            
{
                lb_msg1.Text 
= "删除失败" + ex;
            }

        }

    }

posted on 2007-08-19 10:45  你伟大的cc哥  阅读(1406)  评论(0编辑  收藏  举报