C# Datagridview未显示在网页中

C# Datagridview未显示在网页中,c#,asp.net,sql,sql-server,datagridview,C#,Asp.net,Sql,Sql Server,Datagridview,我正在使用MS Visual Studio 2010(ASP.NET-C#)和MS SQL Server 2005,并试图从我的数据库employee中检索表tblEmployee中的所有记录。在VisualStudio中调试程序时没有错误,但是当localhost网页打开时,datagridviewdgvEmployee不在那里。也没有检索到的记录。这是我的密码: SqlConnection sConn; SqlDataAdapter daEmp; DataSet dsEmp; const

我正在使用MS Visual Studio 2010(ASP.NET-C#)和MS SQL Server 2005,并试图从我的数据库
employee
中检索表
tblEmployee
中的所有记录。在VisualStudio中调试程序时没有错误,但是当localhost网页打开时,datagridview
dgvEmployee
不在那里。也没有检索到的记录。这是我的密码:

SqlConnection sConn;
SqlDataAdapter daEmp;
DataSet dsEmp;

const string sStr = "Server = Server-PC\\SQLEXPRESS; Database = EMPLOYEES; Integrated Security = SSPI";

protected void Page_Load(object sender, EventArgs e)
{
    sConn = new SqlConnection(sStr);
    daEmp = new SqlDataAdapter("SELECT * FROM tblEmployee", sConn);
    dsEmp = new DataSet();

    daEmp.Fill(dsEmp, "tblEmployee");

    dsEmp.Tables["tblEmployee"].PrimaryKey = new DataColumn[] { dsEmp.Tables["tblEmployee"].Columns["EmployeeID"] };

    dgvEmployee.DataSource = dsEmp.Tables["tblEmployee"];
}
这是my Defaultpage.aspx中的代码:

<asp:GridView ID="dgvEmployee" runat="server">
</asp:GridView>


数据库和表名正确,表有记录,我以管理员身份运行这两个程序。我就是不知道怎么了。。。这与权限有关吗?

将数据源提供给网格后,使用此方法

dgvEmployee.DataBind()

您需要绑定网格,如下所示:

dgvEmployee.DataBind();
<asp:GridView ID="dgvEmployee" runat="server" AutoGenerateColumns="True">
</asp:GridView>
<asp:GridView ID="dgvEmployee" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField datafield="CustomerID" headertext="Customer ID"/>
        <asp:BoundField datafield="CompanyName" headertext="Company Name"/>
        <asp:Boundfield datafield="Address" headertext="Address"/>
    </Columns>
</asp:GridView>
注意:与Windows开发(WinForms、WPF等)不同,ASP.NET数据控件需要显式调用来实际绑定数据。从好处来看,在ASP.NET中重新绑定到数据源比在Windows开发中容易得多


另一个问题是,根据您为
GridView
发布的标记,一旦实际调用
.DataBind()
,您将无法获得任何数据,因为
GridView
中没有定义
列。您可以明确定义标记中的列,也可以将
AutoGenerateColumns
属性设置为
True
,如下所示:

dgvEmployee.DataBind();
<asp:GridView ID="dgvEmployee" runat="server" AutoGenerateColumns="True">
</asp:GridView>
<asp:GridView ID="dgvEmployee" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField datafield="CustomerID" headertext="Customer ID"/>
        <asp:BoundField datafield="CompanyName" headertext="Company Name"/>
        <asp:Boundfield datafield="Address" headertext="Address"/>
    </Columns>
</asp:GridView>

注意:将
AutoGenerateColumns
设置为
False
,否则您将得到重复的列,因为它将呈现您定义的列,然后是数据源中的所有列。

谢谢,这非常有帮助。它正在工作。您是否也知道如何更改列的标题名?此代码似乎不起作用:
dgveemployee.Columns[0]。HeaderCell.Value=“Employee ID”
@user2971155-请参阅更新的答案,抱歉,我写的内容比我想象的要多,需要一些时间来更新。:-)如果您解决了问题,请接受此答案,并就您遇到的列名问题提出另一个问题。