C# .net GridView.DataSource

Dia*_*Gea 4 c# asp.net gridview

在 .aspx 我有

<body>
  <form id="form2" runat="server">
 <asp:GridView ID="GridView" runat="server" AutoGenerateColumns="True" Width="100%" ViewStateMode="Enabled">
 <Columns>
    <asp:BoundField ItemStyle-Width="150px" DataField="id" HeaderText="iD" />
    <asp:BoundField ItemStyle-Width="150px" DataField="nme" HeaderText="Name" />
    </Columns>
</asp:GridView>
   </form>
</body>
Run Code Online (Sandbox Code Playgroud)

在 .cs 我有

private void Grid()
{
    string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT id, nme FROM mytable"))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (dt = new DataTable())
                {
                    sda.Fill(dt);
                    GridView.DataSource = dt; //error occurs here
                    GridView.DataBind();
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误 CS0120 An object reference is required for the non-static field, method, or property 'BaseDataBoundControl.DataSource'

.cs 似乎无法识别 .aspx 页面中的 GridView。使用 .net 4.6.1

mas*_*son 5

不要将您的 GridView 称为“GridView”。该框架不知道您是在谈论 GridView 的实例还是在谈论GridView类。讨论起来很混乱,对编译器来说也很混乱。将 ID 更改为与预先存在的类型名称不冲突的其他内容,并适当地更新您的代码。您通常以它包含的内容命名它,例如CustomersGridView.

标记

<asp:GridView ID="CustomersGridView" runat="server">
Run Code Online (Sandbox Code Playgroud)

背后的代码

CustomersGridView.DataSource = dt;
CustomersGridView.DataBind();
Run Code Online (Sandbox Code Playgroud)