简体   繁体   English

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

[英]how to add gridview with objectdatasource in code behind c#?

I want to create gridview with code. 我想用代码创建gridview。 My code is: 我的代码是:

 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();    

this code does not work, and how to add TemplateField do : 这段代码不起作用,以及如何添加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>

how can do it? 怎么办呢?

  1. You need to set DataSourceID property of Grid, not DataSource . 您需要设置Grid的DataSourceID属性,而不是DataSource
  2. There are no need to run DataBind() method of ObjectDataSource . 不需要运行ObjectDataSource DataBind()方法。
  3. Ensure that both controls ObjectDataSource and GridView are added on Page . 确保在Page上添加了控件ObjectDataSourceGridView

Try this: 尝试这个:

  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(); 

According to your second question. 根据你的第二个问题。 Try to replace TemplateField by HyperLinkField . 尝试通过HyperLinkField替换TemplateField Click here for details. 点击此处了解详情。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM