2013-11-15 20 views
0

我有一个表中的SQLASP.NET GridView.Databind空

ID Team1  Team2 Result 
1 Eagle  Eagle — 
2 Eagle  Bull 1:0 
3 Eagle  Snake 0:2 
4 Bull  Eagle 0:1 
5 Bull  Bull — 
6 Bull  Snake 3:4 
7 Snake  Eagle 2:0 
8 Snake  Bull 4:3 
9 Snake  Snake — 

这不是问题加倍。这只是任务的划分和一些衍生问题。 https://stackoverflow.com/posts/19944634/edit 在这个问题上我想要一篇不重要的文章,如19944634文章。

我只想要GridView.Databind。 当我执行BindData函数时,我在浏览器中接收到具有正确列数的表输出,但它是空的。为什么?

代码隐藏:

namespace ASP_Web_Datagrid 
{  
    public partial class GridView_FROM_SQL : System.Web.UI.Page 
    { 
     DataTable dt_teams = new DataTable(); 
     protected void Page_Load(object sender, EventArgs e) 
     { 

      if (!Page.IsPostBack) 
      {  
       BindData(); 
       System.Data.DataTable dtUnique = dt_teams.DefaultView.ToTable(true, "name1"); 
       GridView1.DataSource = dtUnique; 
       GridView1.DataBind(); 
       Message.Text = dt_teams.Rows.Count.ToString(); 

      } 
     } 

     public void BindData() 
     { 
      string constr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
      const string queryTransaction = "SELECT name1 from Team_table"; 
      using (SqlConnection con1 = new SqlConnection(constr)) 
      { 
       using (SqlCommand cmd1 = new SqlCommand(queryTransaction, con1)) 
       { 
        con1.Open();     
        SqlDataAdapter ada; 
        ada = new SqlDataAdapter(cmd1);    
        ada.Fill(dt_teams); 
        cmd1.ExecuteNonQuery();     
        con1.Close(); 
       } 
      } 
     }  

标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"> 
    <Columns> 
     <asp:TemplateField HeaderText="Eagle"> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="litEagle" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Bull"> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="litBull" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Snake"> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="litSnake" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

回答

1

您需要设置文字文本的标记绑定到列名的数据源,如:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
       OnRowDataBound="GridView1_RowDataBound"> 
    <Columns> 
     <asp:TemplateField HeaderText="Eagle"> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="litEagle" 
          Text="<%# Eval('Team1') %>" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Bull"> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="litBull" 
          Text="<%# Eval('Team2') %>" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Snake"> 
      <ItemTemplate> 
       <asp:Literal runat="server" ID="litSnake" 
          Text="<%# Eval('Result') %>" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
+0

谢谢,**卡尔安德森**。我会在稍后测试它。 – ifooi

+0

当我做”/>存在错误字符太多文字\t错误。我添加了ToString。因为会出现另一个错误 – ifooi

+0

和警告验证(ASP.Net):如果此属性值包含在引号中,则引号必须匹配。 – ifooi