C# ASP.NET GridView.Databind为空
我有一个sql表C# ASP.NET GridView.Databind为空,c#,asp.net,gridview,data-binding,C#,Asp.net,Gridview,Data Binding,我有一个sql表 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 Snak
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 —
这不是一个双重问题。这只是任务的划分和一些衍生问题。
在这个问题上,我不想像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>
您需要在标记中设置文本以绑定到数据源中的列名,如下所示:
<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>
谢谢,卡尔·安德森。我会在以后测试它。当我这样做时,会出现错误1,字符文字错误中的字符太多。我加了一个ToString。因为会有另一个错误和警告1验证(ASP.Net):如果此属性值包含在引号中,则引号必须匹配。我理解“字符太多”,我尝试将dt_unique与5行绑定,而将dt_团队与25行绑定。这也不管用。