2015-12-23 58 views
6

我想用代码创建gridview。我的代码是:如何在c#后面的代码中添加gridview与objectdatasource?

GridView gdvList = new GridView(); 
gdvList.ID = "gdvList" ; 
TemplateField tField = new TemplateField(); 
BoundField dateBF = new BoundField(); 
dateBF.DataField = "Date"; 
gdvList.Columns.Add(dateBF); 
BoundField countResponse = new BoundField(); 
countResponse.DataField = "CountResponse"; 
gdvList.Columns.Add(countResponse); 
ObjectDataSource ods = new ObjectDataSource(); 
ods.ID = "ods"; 
ods.TypeName = "Project.BLLQuestion"; 
ods.SelectMethod = "GetByGroupID"; 
ods.SelectParameters["GroupID"] = new Parameter("inGroupID", DbType.Int32, "0"); 
ods.DataBind(); 
gdvList.DataSource = ods; 
gdvList.DataBind();  

此代码不能正常工作,以及如何添加模板列别:

<asp:TemplateField ItemStyle-CssClass="GridItemTemplateField"> 
    <ItemTemplate> 
     <a href="Question.aspx?id=<%# Eval("ID")%>"><%# Eval("Content").ToString().PadRight(140).Substring(0,140).TrimEnd()+"..." %></a> 
    </ItemTemplate> 
</asp:TemplateField> 

怎么能行呢?

+0

为什么你想从代码生成网格? – User2012384

+0

我们有组动态。因此,我们需要它 – shahroz

+0

那么为什么不使用中继器呢? – User2012384

回答

1
  1. 您需要设置网格的DataSourceID属性,而不是DataSource
  2. 有没有必要运行DataBind()方法ObjectDataSource
  3. 确保在Page上添加了两个控件ObjectDataSourceGridView

试试这个:

ObjectDataSource ods = new ObjectDataSource(); 
    ods.ID = "ods"; 
    ods.TypeName = "Project.BLLQuestion"; 
    ods.SelectMethod = "GetByGroupID"; 
    ods.SelectParameters["GroupID"] = new Parameter("inGroupID", DbType.Int32, "0"); 

    Page.Controls.Add(ods); 

    GridView gdvList = new GridView(); 
    gdvList.ID = "gdvList" ; 
    gdvList.DataSourceID = "ods"; 

    BoundField dateBF = new BoundField(); 
    dateBF.DataField = "Date"; 
    gdvList.Columns.Add(dateBF); 

    BoundField countResponse = new BoundField(); 
    countResponse.DataField = "CountResponse"; 
    gdvList.Columns.Add(countResponse); 

    Page.Controls.Add(gdvList); 

    gdvList.DataBind(); 

根据你的第二个问题。尝试用HyperLinkField代替TemplateField。详情请点击here

相关问题