我的DataList里有一个HyperLink,现在要在代码页里给它做数据绑定(为什么不在控件里直接绑定的原因我就不多说了),代码如下:for(int i = 0;i < dl.Items.Count && i < 4;i ++)
{
    HyperLink hl = (HyperLink)dl.Items[i].FindControl("image");    
    hl.NavigateUrl = "View.aspx?table=" + sTable + "&id=" + ?????????;这里应该怎么写?
}有的网友说可以在DataList中加个ID的隐藏列,除了用隐藏列还有什么方法可以实现呢??完整的程序如下(如果大家有兴趣看的话):
----------------------------------------------------------------------------------------string sTable = Request.QueryString["table"]; //数据库表名称
string sPage = Request.QueryString["page"];//分页控件的页面索引 string sConn = ConfigurationSettings.AppSettings["conn1"] + Server.MapPath(ConfigurationSettings.AppSettings["conn2"]);
string sComm = "SELECT * FROM " + sTable + " ORDER BY id DESC";OleDbConnection conn = new OleDbConnection(sConn);
OleDbDataAdapter da = new OleDbDataAdapter(sComm,conn);
DataSet ds = new DataSet();
da.Fill(ds);

PagedDataSource ap = new PagedDataSource();//调用分页类
ap.DataSource = ds.Tables[0].DefaultView;
ap.AllowPaging = true;
ap.PageSize = 4;int iPage = 0;
if(sPage != null)
{
    iPage = Convert.ToInt32(sPage);
    ap.CurrentPageIndex = iPage;
}

if(! ap.IsFirstPage)
{
    prev.NavigateUrl = sPath + (iPage - 1).ToString(); 
}
if(! ap.IsLastPage)
{
    next.NavigateUrl = sPath + (iPage + 1).ToString(); 
} dl.DataSource = ap;
dl.DataBind();//DataList数据绑定

pages.Text = ap.PageCount.ToString();
current.Text = (iPage + 1).ToString();for(int i = 0;i < dl.Items.Count && i < 4;i ++)
{
    HyperLink hl = (HyperLink)dl.Items[i].FindControl("image");    
    hl.NavigateUrl = "View.aspx?table=" + sTable + "&id=" + ????????????;
}

解决方案 »

  1.   

    在ItemCreated事件里写
    for(int i = 0;i < dl.Items.Count && i < 4;i ++)
    {
        HyperLink hl = (HyperLink)dl.Items[i].FindControl("image");    
        hl.NavigateUrl = "View.aspx?table=" + sTable + "&id=" + ????????????;
    }
      

  2.   

    netzww(南龙) 同志,你把问题想的太简单了,如果没有分页,你的写法是对的,但是现在要考虑分页,翻页后数据要正确绑定啊!!
      

  3.   

    PagedDataSource 这个分页类不用过。