Gridview不绑定到数据库

时间:2011-02-25 20:58:27

标签: c# asp.net

我在页面加载中有这个代码...由于某种原因,下拉列表绑定到db,但是不显示我想绑定的gridview。这可能是什么原因?谢谢!

C#:

    SqlConnection conn = new SqlConnection(GetConnectionString());
    conn.Open();

    SqlCommand cmd = new SqlCommand("SELECT CompanyName, CompanyID FROM Company ORDER BY CompanyName", new SqlConnection(GetConnectionString()));
    SqlCommand cmd2 = new SqlCommand("SELECT p.ProjectName AS ProjectName, p.Status FROM Project p, Company c WHERE c.CompanyID = p.CompanyID AND c.CompanyID = 3", new SqlConnection(GetConnectionString()));

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter(cmd);

    DataSet ds = new DataSet();

    da.Fill(ds);

    conn.Close();

    company_list.DataSource = ds;
    company_list.DataTextField = "CompanyName";
    company_list.DataValueField = "CompanyID";
    company_list.DataBind();

    company_list.Items.Insert(0, "-- Please Select Company --");

    cmd2.Connection.Open();

    SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd2);
    DataSet ds2 = new DataSet();
    sqlAdapter.Fill(ds2);

    Gridview1.DataSource = ds2;
    Gridview1.DataBind();

    cmd2.Connection.Close();
    cmd2.Connection.Dispose();

ASP.net:

<asp:gridview ID="Gridview1" runat="server" ShowFooter="True"
                       AutoGenerateColumns="False" GridLines="None">

                    <Columns>
                    <asp:TemplateField HeaderText="Project Name">
                    <ItemTemplate>
                        <asp:TextBox Text='<%#DataBinder.Eval(Container.DataItem, "ProjectName") %>' CssClass="input input1" ID="project_name" width="150" runat="server" ReadOnly="True"></asp:TextBox>
                    </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Status">
                    <ItemTemplate>
                        <asp:TextBox Text='<%#DataBinder.Eval(Container.DataItem, "Status") %>' CssClass="input input1" ID="status" width="150" runat="server" ReadOnly="True"></asp:TextBox>
                    </ItemTemplate>
                    </asp:TemplateField>


        </Columns>

    </asp:gridview>

2 个答案:

答案 0 :(得分:0)

看起来您没有为cmd2设置命令类型。你为什么不尝试以下方法: 首先获取列表框的所有数据,然后关闭conn对象。然后这样做:

 conn.Open();
 SqlCommand cmd2 = new SqlCommand("SELECT p.ProjectName AS ProjectName, p.Status FROM   Project p, Company c WHERE c.CompanyID = p.CompanyID AND c.CompanyID = 3", conn);

cmd2.CommandType = CommandType.Text;

SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
sqlAdapter.Fill(ds2);

Gridview1.DataSource = ds2;
Gridview1.DataBind();

conn.Close();

答案 1 :(得分:0)

GridView没有任何数据。检查查询返回的内容。您可能还想添加EmptyDataTemplate

顺便提一下,默认的CommandType是Text,所以你不需要指定它,也不需要调用Connection.Open或.Close - DataAdapter.Fill方法为你处理所有这些。哦,你应该真的使用DataReader,并绑定它而不是DataSet。