C# Datagridview未显示在网页中
我正在使用MS Visual Studio 2010(ASP.NET-C#)和MS SQL Server 2005,并试图从我的数据库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
employee
中检索表tblEmployee
中的所有记录。在VisualStudio中调试程序时没有错误,但是当localhost网页打开时,datagridviewdgvEmployee
不在那里。也没有检索到的记录。这是我的密码:
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-请参阅更新的答案,抱歉,我写的内容比我想象的要多,需要一些时间来更新。:-)如果您解决了问题,请接受此答案,并就您遇到的列名问题提出另一个问题。