如何在c#后面的代码中添加带有objectdatasource的gridview?

sha*_*roz 7 c# asp.net

我想用代码创建gridview.我的代码是:

 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();    
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,以及如何添加TemplateField:

<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>
Run Code Online (Sandbox Code Playgroud)

怎么办呢?

Pav*_*nko 2

  1. 您需要设置DataSourceIDGrid 的属性,而不是DataSource.
  2. 不需要运行DataBind()的方法ObjectDataSource。
  3. 确保两个控件ObjectDataSource和GridView都添加到 上Page。

尝试这个:

  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(); 
Run Code Online (Sandbox Code Playgroud)

根据你的第二个问题。尝试替换TemplateField为HyperLinkField. 点击此处了解详情。