后台代码 
SqlConnection sqlcon = db.getcon();
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlCommand sqlcom = new SqlCommand("select top 4 petid from pet order by petid Desc", sqlcon);
        sqlcon.Open();
        SqlDataReader sqldr = sqlcom.ExecuteReader();
        this.DataList1.DataSource = sqldr;
        this.DataList1.DataBind();
        sqlcon.Close();
    }
前台代码
 <asp:DataList ID="DataList1" runat="server" Height="264px" RepeatColumns="3" Width="494px">
            <ItemTemplate>
             <uc1:WebUserControl ID="WebUserControl1" runat="server" Petid=<%#Eval("petid") %> />  
            </ItemTemplate>
        </asp:DataList>
用户控件代码
 private string petid;
    public string Petid
    {
        get { return petid; }
        set { petid = value; }
    }
    SqlConnection sqlcon = db.getcon();
    protected void Page_Load(object sender, EventArgs e)
    {
            SqlCommand sqlcn = new SqlCommand("select * from pet where petid='"+this.petid+"'", sqlcon);
           sqlcon.Open();
            SqlDataReader sqlde = sqlcn.ExecuteReader();
          if(sqlde.Read())
            {
                this.Label1.Text = sqlde.GetString(1);
                this.Label2.Text = sqlde.GetString(2);
                this.Label3.Text = sqlde.GetSqlMoney(3).ToString();
             }
            sqlcon.Close();
        }
结果显示的是所有的值都集中显示在一起了,想要的结果是每传进一个字段值,显示出一个单元格数据,请各位老大们帮忙指点下

解决方案 »

  1.   

    搞不明白为什么要弄得这么复杂,DataList中还要放个用户控件...直接在DataList中显示pet表的值就行了,每传进一个字段值,显示出一个单元格数据,可以用DataView过滤:SqlConnection sqlcon = db.getcon(); 
      protected void Page_Load(object sender, EventArgs e) 
        { string id = Request.Questring["id"];sqlcon.Open(); 
    SqlDataAdapter dbAdapter = new SqlDataAdapter("select * from pet", con);
    DataSet ds = new DataSet();
    dbAdapter.Fill(ds);
    sqlcon.Close(); 
    DataTable   mytbl   =   ds.Tables[0];               
    DataView   dataView   =   mytbl.DefaultView; //过滤一遍 
    dataView.RowFilter   =   "   petid= "   +   id; this.DataList1.DataSource = dataView; 
    this.DataList1.DataBind(); } 
      

  2.   

    加上if(!IsPostBack)
    {
      SqlCommand sqlcn = new SqlCommand("select * from pet where petid='"+this.petid+"'", sqlcon); 
              sqlcon.Open(); 
                SqlDataReader sqlde = sqlcn.ExecuteReader(); 
              if(sqlde.Read()) 
                { 
                    this.Label1.Text = sqlde.GetString(1); 
                    this.Label2.Text = sqlde.GetString(2); 
                    this.Label3.Text = sqlde.GetSqlMoney(3).ToString(); 
                } 
                sqlcon.Close(); 
    }
    或直接在datalist里嵌套实现很简单